Repository: VictoriaMetrics/VictoriaMetrics
Pull request #2041 (2022-01-09 15:46:16)

Fix for #2038: Make correct __address__ value for dockerswarm promscrape
See #2038 for details. Fixed `__address__` field name on line 124 and removed it from commonLabels to avoid overwriting.


Patch:
diff --git a/app/vmui/packages/vmui/package-lock.json b/app/vmui/packages/vmui/package-lock.json
index 189e279f1..a91066e21 100644
--- a/app/vmui/packages/vmui/package-lock.json
+++ b/app/vmui/packages/vmui/package-lock.json
@@ -12,17 +12,17 @@
         "@emotion/react": "^11.7.1",
         "@emotion/styled": "^11.6.0",
         "@mui/icons-material": "^5.2.5",
-        "@mui/lab": "^5.0.0-alpha.62",
-        "@mui/material": "^5.2.4",
+        "@mui/lab": "^5.0.0-alpha.63",
+        "@mui/material": "^5.2.7",
         "@mui/styles": "^5.2.3",
         "@testing-library/jest-dom": "^5.16.1",
         "@testing-library/react": "^12.1.2",
         "@testing-library/user-event": "^13.5.0",
-        "@types/jest": "^27.0.3",
+        "@types/jest": "^27.4.0",
         "@types/lodash.debounce": "^4.0.6",
         "@types/lodash.get": "^4.4.6",
         "@types/lodash.throttle": "^4.1.6",
-        "@types/node": "^17.0.6",
+        "@types/node": "^17.0.8",
         "@types/numeral": "^2.0.2",
         "@types/qs": "^6.9.7",
         "@types/react": "^17.0.38",
@@ -41,12 +41,12 @@
         "react-scripts": "5.0.0",
         "typescript": "~4.5.4",
         "uplot": "^1.6.18",
-        "web-vitals": "^2.1.2"
+        "web-vitals": "^2.1.3"
       },
       "devDependencies": {
         "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
-        "@typescript-eslint/eslint-plugin": "^5.8.1",
-        "@typescript-eslint/parser": "^5.8.0",
+        "@typescript-eslint/eslint-plugin": "^5.9.0",
+        "@typescript-eslint/parser": "^5.9.0",
         "customize-cra": "^1.0.0",
         "eslint-plugin-react": "^7.28.0",
         "react-app-rewired": "^2.1.11"
@@ -2637,9 +2637,9 @@
       }
     },
     "node_modules/@mui/base": {
-      "version": "5.0.0-alpha.60",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.60.tgz",
-      "integrity": "sha512-J4cQoeqNFMaY6fgEJsT7meaLdYilA4R8wA53us3BT5NBP4puMeJLPK4rVSmpTsB8hf4Iyq+fosKzkcYRiKTctA==",
+      "version": "5.0.0-alpha.63",
+      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.63.tgz",
+      "integrity": "sha512-/jURXlBAYqZaWw92XfJgc6aiHnDcNVuRxBskub57HXWCMK3OiVVdfUEWJEdCjOacCKiw3+Etc5alI9Omaqrg2g==",
       "dependencies": {
         "@babel/runtime": "^7.16.3",
         "@emotion/is-prop-valid": "^1.1.1",
@@ -2693,16 +2693,16 @@
       }
     },
     "node_modules/@mui/lab": {
-      "version": "5.0.0-alpha.62",
-      "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.62.tgz",
-      "integrity": "sha512-oUxGhoaTvNFiXjV6xe3pGu+wvQsDC9R8Q6Os8xL4TUwihdaU/pIBRuUiANtJOZJPgJ1JyUpTwZZDTvOiCQFwZA==",
+      "version": "5.0.0-alpha.63",
+      "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.63.tgz",
+      "integrity": "sha512-BFexWjiiXZ2aWfSq+4j1cua7XmCt7BIDC27MgFWoKY6O0Fe3zeUz/6WH0M5+4VKT+yn3DC3vzWGAWKmNDa3TUQ==",
       "dependencies": {
         "@babel/runtime": "^7.16.3",
         "@date-io/date-fns": "^2.11.0",
         "@date-io/dayjs": "^2.11.0",
         "@date-io/luxon": "^2.11.1",
         "@date-io/moment": "^2.11.0",
-        "@mui/base": "5.0.0-alpha.62",
+        "@mui/base": "5.0.0-alpha.63",
         "@mui/system": "^5.2.6",
         "@mui/utils": "^5.2.3",
         "clsx": "^1.1.1",
@@ -2746,45 +2746,14 @@
         }
       }
     },
-    "node_modules/@mui/lab/node_modules/@mui/base": {
-      "version": "5.0.0-alpha.62",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.62.tgz",
-      "integrity": "sha512-ItmdSZwHKQbLbAsS3sWguR7OHqYqh2cYWahoVmHb13Kc6bMdmVUTY4x57IlDSU712B0yuA0Q/gPTq7xADKnFow==",
-      "dependencies": {
-        "@babel/runtime": "^7.16.3",
-        "@emotion/is-prop-valid": "^1.1.1",
-        "@mui/utils": "^5.2.3",
-        "@popperjs/core": "^2.4.4",
-        "clsx": "^1.1.1",
-        "prop-types": "^15.7.2",
-        "react-is": "^17.0.2"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/mui"
-      },
-      "peerDependencies": {
-        "@types/react": "^16.8.6 || ^17.0.0",
-        "react": "^17.0.2",
-        "react-dom": "^17.0.2"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/@mui/material": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.4.tgz",
-      "integrity": "sha512-W/0ib0aB5gKQ9DmEnYeKbmmzKBpn0039qDuQHjBE6RL5P1L5iYPGFMy4Es+7oQxiC77SuJ3xSOPsTpOW8QGDqw==",
+      "version": "5.2.7",
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.7.tgz",
+      "integrity": "sha512-JaDl9GJSV17QLf4OoDUZKvVjZ/7UvqOBAxwLwUTnKZEME4REaGTkaAeHrzLpcKCm0LlNGD2HOKAIeykI6WJiqg==",
       "dependencies": {
         "@babel/runtime": "^7.16.3",
-        "@mui/base": "5.0.0-alpha.60",
-        "@mui/system": "^5.2.4",
+        "@mui/base": "5.0.0-alpha.63",
+        "@mui/system": "^5.2.6",
         "@mui/types": "^7.1.0",
         "@mui/utils": "^5.2.3",
         "@types/react-transition-group": "^4.4.4",
@@ -3656,9 +3625,9 @@
       }
     },
     "node_modules/@types/jest": {
-      "version": "27.0.3",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz",
-      "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==",
+      "version": "27.4.0",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz",
+      "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==",
       "dependencies": {
         "jest-diff": "^27.0.0",
         "pretty-format": "^27.0.0"
@@ -3704,9 +3673,9 @@
       }
     },
     "node_modules/@types/node": {
-      "version": "17.0.6",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz",
-      "integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA=="
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz",
+      "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg=="
     },
     "node_modules/@types/numeral": {
       "version": "2.0.2",
@@ -3830,12 +3799,13 @@
       "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.1.tgz",
-      "integrity": "sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz",
+      "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==",
       "dependencies": {
-        "@typescript-eslint/experimental-utils": "5.8.1",
-        "@typescript-eslint/scope-manager": "5.8.1",
+        "@typescript-eslint/experimental-utils": "5.9.0",
+        "@typescript-eslint/scope-manager": "5.9.0",
+        "@typescript-eslint/type-utils": "5.9.0",
         "debug": "^4.3.2",
         "functional-red-black-tree": "^1.0.1",
         "ignore": "^5.1.8",
@@ -3860,67 +3830,15 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz",
-      "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==",
-      "dependencies": {
-        "@typescript-eslint/types": "5.8.1",
-        "@typescript-eslint/visitor-keys": "5.8.1"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz",
-      "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz",
-      "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==",
-      "dependencies": {
-        "@typescript-eslint/types": "5.8.1",
-        "eslint-visitor-keys": "^3.0.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
-      "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
     "node_modules/@typescript-eslint/experimental-utils": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.1.tgz",
-      "integrity": "sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz",
+      "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==",
       "dependencies": {
         "@types/json-schema": "^7.0.9",
-        "@typescript-eslint/scope-manager": "5.8.1",
-        "@typescript-eslint/types": "5.8.1",
-        "@typescript-eslint/typescript-estree": "5.8.1",
+        "@typescript-eslint/scope-manager": "5.9.0",
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/typescript-estree": "5.9.0",
         "eslint-scope": "^5.1.1",
         "eslint-utils": "^3.0.0"
       },
@@ -3935,13 +3853,15 @@
         "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
     },
-    "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz",
-      "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==",
+    "node_modules/@typescript-eslint/parser": {
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz",
+      "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==",
       "dependencies": {
-        "@typescript-eslint/types": "5.8.1",
-        "@typescript-eslint/visitor-keys": "5.8.1"
+        "@typescript-eslint/scope-manager": "5.9.0",
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/typescript-estree": "5.9.0",
+        "debug": "^4.3.2"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3949,39 +3869,9 @@
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz",
-      "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz",
-      "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==",
-      "dependencies": {
-        "@typescript-eslint/types": "5.8.1",
-        "@typescript-eslint/visitor-keys": "5.8.1",
-        "debug": "^4.3.2",
-        "globby": "^11.0.4",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.5",
-        "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": "^6.0.0 || ^7.0.0 || ^8.0.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -3989,13 +3879,13 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz",
-      "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==",
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz",
+      "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==",
       "dependencies": {
-        "@typescript-eslint/types": "5.8.1",
-        "eslint-visitor-keys": "^3.0.0"
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/visitor-keys": "5.9.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4005,23 +3895,14 @@
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
-      "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
-    "node_modules/@typescript-eslint/parser": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.0.tgz",
-      "integrity": "sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw==",
+    "node_modules/@typescript-eslint/type-utils": {
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz",
+      "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==",
       "dependencies": {
-        "@typescript-eslint/scope-manager": "5.8.0",
-        "@typescript-eslint/types": "5.8.0",
-        "@typescript-eslint/typescript-estree": "5.8.0",
-        "debug": "^4.3.2"
+        "@typescript-eslint/experimental-utils": "5.9.0",
+        "debug": "^4.3.2",
+        "tsutils": "^3.21.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4031,7 +3912,7 @@
         "url": "https://opencollective.com/typescript-eslint"
       },
       "peerDependencies": {
-        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+        "eslint": "*"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -4039,26 +3920,10 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz",
-      "integrity": "sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg==",
-      "dependencies": {
-        "@typescript-eslint/types": "5.8.0",
-        "@typescript-eslint/visitor-keys": "5.8.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
     "node_modules/@typescript-eslint/types": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.0.tgz",
-      "integrity": "sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz",
+      "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==",
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
@@ -4068,12 +3933,12 @@
       }
     },
     "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz",
-      "integrity": "sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz",
+      "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==",
       "dependencies": {
-        "@typescript-eslint/types": "5.8.0",
-        "@typescript-eslint/visitor-keys": "5.8.0",
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/visitor-keys": "5.9.0",
         "debug": "^4.3.2",
         "globby": "^11.0.4",
         "is-glob": "^4.0.3",
@@ -4094,11 +3959,11 @@
       }
     },
     "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz",
-      "integrity": "sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz",
+      "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==",
       "dependencies": {
-        "@typescript-eslint/types": "5.8.0",
+        "@typescript-eslint/types": "5.9.0",
         "eslint-visitor-keys": "^3.0.0"
       },
       "engines": {
@@ -15149,9 +15014,9 @@
       }
     },
     "node_modules/web-vitals": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.2.tgz",
-      "integrity": "sha512-nZnEH8dj+vJFqCRYdvYv0a59iLXsb8jJkt+xvXfwgnkyPdsSLtKNlYmtTDiHmTNGXeSXtpjTTUcNvFtrAk6VMQ=="
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.3.tgz",
+      "integrity": "sha512-+ijpniAzcnQicXaXIN0/eHQAiV/jMt1oHGHTmz7VdAJPPkzzDhmoYPSpLgJTuFtUh+jCjxCoeTZPg7Ic+g8o7w=="
     },
     "node_modules/webidl-conversions": {
       "version": "6.1.0",
@@ -17773,9 +17638,9 @@
       }
     },
     "@mui/base": {
-      "version": "5.0.0-alpha.60",
-      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.60.tgz",
-      "integrity": "sha512-J4cQoeqNFMaY6fgEJsT7meaLdYilA4R8wA53us3BT5NBP4puMeJLPK4rVSmpTsB8hf4Iyq+fosKzkcYRiKTctA==",
+      "version": "5.0.0-alpha.63",
+      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.63.tgz",
+      "integrity": "sha512-/jURXlBAYqZaWw92XfJgc6aiHnDcNVuRxBskub57HXWCMK3OiVVdfUEWJEdCjOacCKiw3+Etc5alI9Omaqrg2g==",
       "requires": {
         "@babel/runtime": "^7.16.3",
         "@emotion/is-prop-valid": "^1.1.1",
@@ -17795,16 +17660,16 @@
       }
     },
     "@mui/lab": {
-      "version": "5.0.0-alpha.62",
-      "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.62.tgz",
-      "integrity": "sha512-oUxGhoaTvNFiXjV6xe3pGu+wvQsDC9R8Q6Os8xL4TUwihdaU/pIBRuUiANtJOZJPgJ1JyUpTwZZDTvOiCQFwZA==",
+      "version": "5.0.0-alpha.63",
+      "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.63.tgz",
+      "integrity": "sha512-BFexWjiiXZ2aWfSq+4j1cua7XmCt7BIDC27MgFWoKY6O0Fe3zeUz/6WH0M5+4VKT+yn3DC3vzWGAWKmNDa3TUQ==",
       "requires": {
         "@babel/runtime": "^7.16.3",
         "@date-io/date-fns": "^2.11.0",
         "@date-io/dayjs": "^2.11.0",
         "@date-io/luxon": "^2.11.1",
         "@date-io/moment": "^2.11.0",
-        "@mui/base": "5.0.0-alpha.62",
+        "@mui/base": "5.0.0-alpha.63",
         "@mui/system": "^5.2.6",
         "@mui/utils": "^5.2.3",
         "clsx": "^1.1.1",
@@ -17812,32 +17677,16 @@
         "react-is": "^17.0.2",
         "react-transition-group": "^4.4.2",
         "rifm": "^0.12.1"
-      },
-      "dependencies": {
-        "@mui/base": {
-          "version": "5.0.0-alpha.62",
-          "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.62.tgz",
-          "integrity": "sha512-ItmdSZwHKQbLbAsS3sWguR7OHqYqh2cYWahoVmHb13Kc6bMdmVUTY4x57IlDSU712B0yuA0Q/gPTq7xADKnFow==",
-          "requires": {
-            "@babel/runtime": "^7.16.3",
-            "@emotion/is-prop-valid": "^1.1.1",
-            "@mui/utils": "^5.2.3",
-            "@popperjs/core": "^2.4.4",
-            "clsx": "^1.1.1",
-            "prop-types": "^15.7.2",
-            "react-is": "^17.0.2"
-          }
-        }
       }
     },
     "@mui/material": {
-      "version": "5.2.4",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.4.tgz",
-      "integrity": "sha512-W/0ib0aB5gKQ9DmEnYeKbmmzKBpn0039qDuQHjBE6RL5P1L5iYPGFMy4Es+7oQxiC77SuJ3xSOPsTpOW8QGDqw==",
+      "version": "5.2.7",
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.7.tgz",
+      "integrity": "sha512-JaDl9GJSV17QLf4OoDUZKvVjZ/7UvqOBAxwLwUTnKZEME4REaGTkaAeHrzLpcKCm0LlNGD2HOKAIeykI6WJiqg==",
       "requires": {
         "@babel/runtime": "^7.16.3",
-        "@mui/base": "5.0.0-alpha.60",
-        "@mui/system": "^5.2.4",
+        "@mui/base": "5.0.0-alpha.63",
+        "@mui/system": "^5.2.6",
         "@mui/types": "^7.1.0",
         "@mui/utils": "^5.2.3",
         "@types/react-transition-group": "^4.4.4",
@@ -18379,9 +18228,9 @@
       }
     },
     "@types/jest": {
-      "version": "27.0.3",
-      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz",
-      "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==",
+      "version": "27.4.0",
+      "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz",
+      "integrity": "sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==",
       "requires": {
         "jest-diff": "^27.0.0",
         "pretty-format": "^27.0.0"
@@ -18427,9 +18276,9 @@
       }
     },
     "@types/node": {
-      "version": "17.0.6",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz",
-      "integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA=="
+      "version": "17.0.8",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz",
+      "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg=="
     },
     "@types/numeral": {
       "version": "2.0.2",
@@ -18553,139 +18402,76 @@
       "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
     },
     "@typescript-eslint/eslint-plugin": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.1.tgz",
-      "integrity": "sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz",
+      "integrity": "sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==",
       "requires": {
-        "@typescript-eslint/experimental-utils": "5.8.1",
-        "@typescript-eslint/scope-manager": "5.8.1",
+        "@typescript-eslint/experimental-utils": "5.9.0",
+        "@typescript-eslint/scope-manager": "5.9.0",
+        "@typescript-eslint/type-utils": "5.9.0",
         "debug": "^4.3.2",
         "functional-red-black-tree": "^1.0.1",
         "ignore": "^5.1.8",
         "regexpp": "^3.2.0",
         "semver": "^7.3.5",
         "tsutils": "^3.21.0"
-      },
-      "dependencies": {
-        "@typescript-eslint/scope-manager": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz",
-          "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==",
-          "requires": {
-            "@typescript-eslint/types": "5.8.1",
-            "@typescript-eslint/visitor-keys": "5.8.1"
-          }
-        },
-        "@typescript-eslint/types": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz",
-          "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA=="
-        },
-        "@typescript-eslint/visitor-keys": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz",
-          "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==",
-          "requires": {
-            "@typescript-eslint/types": "5.8.1",
-            "eslint-visitor-keys": "^3.0.0"
-          }
-        },
-        "eslint-visitor-keys": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
-          "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA=="
-        }
       }
     },
     "@typescript-eslint/experimental-utils": {
-      "version": "5.8.1",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.1.tgz",
-      "integrity": "sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz",
+      "integrity": "sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==",
       "requires": {
         "@types/json-schema": "^7.0.9",
-        "@typescript-eslint/scope-manager": "5.8.1",
-        "@typescript-eslint/types": "5.8.1",
-        "@typescript-eslint/typescript-estree": "5.8.1",
+        "@typescript-eslint/scope-manager": "5.9.0",
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/typescript-estree": "5.9.0",
         "eslint-scope": "^5.1.1",
         "eslint-utils": "^3.0.0"
-      },
-      "dependencies": {
-        "@typescript-eslint/scope-manager": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz",
-          "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==",
-          "requires": {
-            "@typescript-eslint/types": "5.8.1",
-            "@typescript-eslint/visitor-keys": "5.8.1"
-          }
-        },
-        "@typescript-eslint/types": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz",
-          "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA=="
-        },
-        "@typescript-eslint/typescript-estree": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz",
-          "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==",
-          "requires": {
-            "@typescript-eslint/types": "5.8.1",
-            "@typescript-eslint/visitor-keys": "5.8.1",
-            "debug": "^4.3.2",
-            "globby": "^11.0.4",
-            "is-glob": "^4.0.3",
-            "semver": "^7.3.5",
-            "tsutils": "^3.21.0"
-          }
-        },
-        "@typescript-eslint/visitor-keys": {
-          "version": "5.8.1",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz",
-          "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==",
-          "requires": {
-            "@typescript-eslint/types": "5.8.1",
-            "eslint-visitor-keys": "^3.0.0"
-          }
-        },
-        "eslint-visitor-keys": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
-          "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA=="
-        }
       }
     },
     "@typescript-eslint/parser": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.0.tgz",
-      "integrity": "sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.0.tgz",
+      "integrity": "sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==",
       "requires": {
-        "@typescript-eslint/scope-manager": "5.8.0",
-        "@typescript-eslint/types": "5.8.0",
-        "@typescript-eslint/typescript-estree": "5.8.0",
+        "@typescript-eslint/scope-manager": "5.9.0",
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/typescript-estree": "5.9.0",
         "debug": "^4.3.2"
       }
     },
     "@typescript-eslint/scope-manager": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz",
-      "integrity": "sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz",
+      "integrity": "sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==",
+      "requires": {
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/visitor-keys": "5.9.0"
+      }
+    },
+    "@typescript-eslint/type-utils": {
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz",
+      "integrity": "sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==",
       "requires": {
-        "@typescript-eslint/types": "5.8.0",
-        "@typescript-eslint/visitor-keys": "5.8.0"
+        "@typescript-eslint/experimental-utils": "5.9.0",
+        "debug": "^4.3.2",
+        "tsutils": "^3.21.0"
       }
     },
     "@typescript-eslint/types": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.0.tgz",
-      "integrity": "sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg=="
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz",
+      "integrity": "sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg=="
     },
     "@typescript-eslint/typescript-estree": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz",
-      "integrity": "sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz",
+      "integrity": "sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==",
       "requires": {
-        "@typescript-eslint/types": "5.8.0",
-        "@typescript-eslint/visitor-keys": "5.8.0",
+        "@typescript-eslint/types": "5.9.0",
+        "@typescript-eslint/visitor-keys": "5.9.0",
         "debug": "^4.3.2",
         "globby": "^11.0.4",
         "is-glob": "^4.0.3",
@@ -18694,11 +18480,11 @@
       }
     },
     "@typescript-eslint/visitor-keys": {
-      "version": "5.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz",
-      "integrity": "sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug==",
+      "version": "5.9.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz",
+      "integrity": "sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==",
       "requires": {
-        "@typescript-eslint/types": "5.8.0",
+        "@typescript-eslint/types": "5.9.0",
         "eslint-visitor-keys": "^3.0.0"
       },
       "dependencies": {
@@ -26754,9 +26540,9 @@
       }
     },
     "web-vitals": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.2.tgz",
-      "integrity": "sha512-nZnEH8dj+vJFqCRYdvYv0a59iLXsb8jJkt+xvXfwgnkyPdsSLtKNlYmtTDiHmTNGXeSXtpjTTUcNvFtrAk6VMQ=="
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.3.tgz",
+      "integrity": "sha512-+ijpniAzcnQicXaXIN0/eHQAiV/jMt1oHGHTmz7VdAJPPkzzDhmoYPSpLgJTuFtUh+jCjxCoeTZPg7Ic+g8o7w=="
     },
     "webidl-conversions": {
       "version": "6.1.0",
diff --git a/app/vmui/packages/vmui/package.json b/app/vmui/packages/vmui/package.json
index 62dd7ddbf..bc1ee4dd2 100644
--- a/app/vmui/packages/vmui/package.json
+++ b/app/vmui/packages/vmui/package.json
@@ -8,17 +8,17 @@
     "@emotion/react": "^11.7.1",
     "@emotion/styled": "^11.6.0",
     "@mui/icons-material": "^5.2.5",
-    "@mui/lab": "^5.0.0-alpha.62",
-    "@mui/material": "^5.2.4",
+    "@mui/lab": "^5.0.0-alpha.63",
+    "@mui/material": "^5.2.7",
     "@mui/styles": "^5.2.3",
     "@testing-library/jest-dom": "^5.16.1",
     "@testing-library/react": "^12.1.2",
     "@testing-library/user-event": "^13.5.0",
-    "@types/jest": "^27.0.3",
+    "@types/jest": "^27.4.0",
     "@types/lodash.debounce": "^4.0.6",
     "@types/lodash.get": "^4.4.6",
     "@types/lodash.throttle": "^4.1.6",
-    "@types/node": "^17.0.6",
+    "@types/node": "^17.0.8",
     "@types/numeral": "^2.0.2",
     "@types/qs": "^6.9.7",
     "@types/react": "^17.0.38",
@@ -37,7 +37,7 @@
     "react-scripts": "5.0.0",
     "typescript": "~4.5.4",
     "uplot": "^1.6.18",
-    "web-vitals": "^2.1.2"
+    "web-vitals": "^2.1.3"
   },
   "scripts": {
     "start": "react-app-rewired start",
@@ -67,8 +67,8 @@
   },
   "devDependencies": {
     "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
-    "@typescript-eslint/eslint-plugin": "^5.8.1",
-    "@typescript-eslint/parser": "^5.8.0",
+    "@typescript-eslint/eslint-plugin": "^5.9.0",
+    "@typescript-eslint/parser": "^5.9.0",
     "customize-cra": "^1.0.0",
     "eslint-plugin-react": "^7.28.0",
     "react-app-rewired": "^2.1.11"
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 52f10a1e8..fab0da64c 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -9,6 +9,7 @@ sort: 15
 * FEATURE: [vmagent](https://docs.victoriametrics.com/vmagent.html): log error message when remote storage returns 400 or 409 http errors. This should simplify detection and debugging of this case. See [this issue](vmagent_remotewrite_packets_dropped_total).
 * FEATURE: [vmrestore](https://docs.victoriametrics.com/vmrestore.html): store `restore-in-progress` file in `-dst` directory while `vmrestore` is running. This file is automatically deleted when `vmrestore` is successfully finished. This helps detecting incompletely restored data on VictoriaMetrics start. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1958).
 * FEATURE: [vmctl](https://docs.victoriametrics.com/vmctl.html): print the last sample timestamp when the data migration is interrupted either by user or by error. This helps continuing the data migration from the interruption moment. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1236).
+* FEATURE: [vmalert](https://docs.victoriametrics.com/vmalert.html): expose `vmalert_remotewrite_total` metric at `/metrics` page. This makes possible calculating SLOs for error rate during writing recording rules and alert state to `-remoteWrite.url` with the query `vmalert_remotewrite_errors_total / vmalert_remotewrite_total`. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/2040). Thanks to @afoninsky .
 
 * BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): make sure that `vmagent` replicas scrape the same targets at different time offsets when [replication is enabled in vmagent clustering mode](https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets). This guarantees that the [deduplication](https://docs.victoriametrics.com/#deduplication) consistently leaves samples from the same `vmagent` replica.
 * BUGFIX: return the proper response stub from `/api/v1/query_exemplars` handler, which is needed for Grafana v8+. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1999).
diff --git a/docs/guides/getting-started-with-vm-operator.md b/docs/guides/getting-started-with-vm-operator.md
index b63f35e22..365287de5 100644
--- a/docs/guides/getting-started-with-vm-operator.md
+++ b/docs/guides/getting-started-with-vm-operator.md
@@ -148,7 +148,7 @@ vminsert-example-vmcluster-persistent    ClusterIP   10.107.47.136   <none>
 ```
 
 To scrape metrics from Kubernetes with a VictoriaMetrics Cluster we will need to install [VMAgent](https://docs.victoriametrics.com/vmagent.html) with some additional configurations.
-Copy `vminsert-example-vmcluster-persistent` (or whatever user put into metadata.name field [https://docs.victoriametrics.com/getting-started-with-vm-operator.html#example-cluster-config](https://docs.victoriametrics.com/getting-started-with-vm-operator.html#example-cluster-config)) service name and add it to the `remoteWrite` URL from [quick-start example](https://github.com/VictoriaMetrics/operator/blob/master/docs/quick-start.MD#vmagent). 
+Copy `vminsert-example-vmcluster-persistent` (or whatever user put into metadata.name field [https://docs.victoriametrics.com/guides/getting-started-with-vm-operator.html#example-cluster-config](https://docs.victoriametrics.com/guides/getting-started-with-vm-operator.html#example-cluster-config)) service name and add it to the `remoteWrite` URL from [quick-start example](https://github.com/VictoriaMetrics/operator/blob/master/docs/quick-start.MD#vmagent). 
 Here is an example of the full configuration that we need to apply:
 
 <div class="with-copy" markdown="1">
@@ -314,4 +314,4 @@ The expected output is:
 ## 6. Summary
 
 * We set up Kubernetes Operator for VictoriaMetrics with using CRD.
-* We collected metrics from all running services and stored them in the VictoriaMetrics database.
\ No newline at end of file
+* We collected metrics from all running services and stored them in the VictoriaMetrics database.
diff --git a/lib/promscrape/discovery/dockerswarm/tasks.go b/lib/promscrape/discovery/dockerswarm/tasks.go
index 4cd4b7dca..416fc6f38 100644
--- a/lib/promscrape/discovery/dockerswarm/tasks.go
+++ b/lib/promscrape/discovery/dockerswarm/tasks.go
@@ -94,6 +94,7 @@ func addTasksLabels(tasks []task, nodesLabels, servicesLabels []map[string]strin
 		}
 		addLabels(commonLabels, servicesLabels, "__meta_dockerswarm_service_id", task.ServiceID)
 		addLabels(commonLabels, nodesLabels, "__meta_dockerswarm_node_id", task.NodeID)
+		delete(commonLabels, "__address__")
 
 		for _, port := range task.Status.PortStatus.Ports {
 			if port.Protocol != "tcp" {
@@ -121,7 +122,7 @@ func addTasksLabels(tasks []task, nodesLabels, servicesLabels []map[string]strin
 						continue
 					}
 					m := map[string]string{
-						"__address": discoveryutils.JoinHostPort(ip.String(), ep.PublishedPort),
+						"__address__": discoveryutils.JoinHostPort(ip.String(), ep.PublishedPort),
 						"__meta_dockerswarm_task_port_publish_mode": ep.PublishMode,
 					}
 					for k, v := range commonLabels {


Test patch:
diff --git a/lib/promscrape/discovery/dockerswarm/tasks_test.go b/lib/promscrape/discovery/dockerswarm/tasks_test.go
index 783122939..4a1d1ed2f 100644
--- a/lib/promscrape/discovery/dockerswarm/tasks_test.go
+++ b/lib/promscrape/discovery/dockerswarm/tasks_test.go
@@ -167,7 +167,7 @@ func Test_addTasksLabels(t *testing.T) {
 			},
 			want: [][]prompbmarshal.Label{
 				discoveryutils.GetSortedLabels(map[string]string{
-					"__address__":                                   "172.31.40.97:9100",
+					"__address__":                                   "172.31.40.97:6379",
 					"__meta_dockerswarm_node_address":               "172.31.40.97",
 					"__meta_dockerswarm_node_availability":          "active",
 					"__meta_dockerswarm_node_engine_version":        "19.03.11",
@@ -295,9 +295,10 @@ func Test_addTasksLabels(t *testing.T) {
 						}{
 							Ports: []portConfig{
 								{
-									Protocol:    "tcp",
-									Name:        "redis",
-									PublishMode: "ingress",
+									Protocol:      "tcp",
+									Name:          "redis",
+									PublishMode:   "ingress",
+									PublishedPort: 6379,
 								},
 							}, VirtualIPs: []struct {
 								NetworkID string
@@ -315,8 +316,7 @@ func Test_addTasksLabels(t *testing.T) {
 			},
 			want: [][]prompbmarshal.Label{
 				discoveryutils.GetSortedLabels(map[string]string{
-					"__address":                                     "10.10.15.15:0",
-					"__address__":                                   "172.31.40.97:9100",
+					"__address__":                                   "10.10.15.15:6379",
 					"__meta_dockerswarm_network_id":                 "qs0hog6ldlei9ct11pr3c77v1",
 					"__meta_dockerswarm_network_ingress":            "true",
 					"__meta_dockerswarm_network_internal":           "false",