diff --git a/package-lock.json b/package-lock.json
index 9a91eebb352185e8021386ca761986d9b2114e27..a06d9642d075497d731df6ebe34cda66a619cd31 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,29 +16,35 @@
                 "@babel/plugin-transform-runtime": "^7.12.1",
                 "@babel/preset-env": "^7.12.1",
                 "@babel/register": "^7.12.1",
-                "@ckeditor/ckeditor5-alignment": "34.2.0",
-                "@ckeditor/ckeditor5-autoformat": "34.2.0",
-                "@ckeditor/ckeditor5-basic-styles": "34.2.0",
-                "@ckeditor/ckeditor5-build-classic": "34.2.0",
-                "@ckeditor/ckeditor5-build-decoupled-document": "34.2.0",
-                "@ckeditor/ckeditor5-build-inline": "34.2.0",
-                "@ckeditor/ckeditor5-code-block": "34.2.0",
-                "@ckeditor/ckeditor5-dev-utils": "^30.5.0",
-                "@ckeditor/ckeditor5-dev-webpack-plugin": "^30.5.0",
-                "@ckeditor/ckeditor5-essentials": "34.2.0",
-                "@ckeditor/ckeditor5-find-and-replace": "34.2.0",
-                "@ckeditor/ckeditor5-font": "34.2.0",
-                "@ckeditor/ckeditor5-horizontal-line": "34.2.0",
-                "@ckeditor/ckeditor5-html-support": "34.2.0",
-                "@ckeditor/ckeditor5-indent": "34.2.0",
-                "@ckeditor/ckeditor5-paragraph": "34.2.0",
-                "@ckeditor/ckeditor5-remove-format": "34.2.0",
-                "@ckeditor/ckeditor5-source-editing": "34.2.0",
-                "@ckeditor/ckeditor5-special-characters": "34.2.0",
-                "@ckeditor/ckeditor5-table": "34.2.0",
-                "@ckeditor/ckeditor5-theme-lark": "34.2.0",
-                "@ckeditor/ckeditor5-typing": "34.2.0",
-                "@ckeditor/ckeditor5-upload": "34.2.0",
+                "@ckeditor/ckeditor5-alignment": "^36.x",
+                "@ckeditor/ckeditor5-autoformat": "^36.x",
+                "@ckeditor/ckeditor5-basic-styles": "^36.x",
+                "@ckeditor/ckeditor5-block-quote": "^36.x",
+                "@ckeditor/ckeditor5-code-block": "^36.x",
+                "@ckeditor/ckeditor5-core": "^36.x",
+                "@ckeditor/ckeditor5-dev-translations": "^36.x",
+                "@ckeditor/ckeditor5-dev-utils": "^36.x",
+                "@ckeditor/ckeditor5-easy-image": "^36.x",
+                "@ckeditor/ckeditor5-editor-balloon": "^36.x",
+                "@ckeditor/ckeditor5-editor-classic": "^36.x",
+                "@ckeditor/ckeditor5-essentials": "^36.x",
+                "@ckeditor/ckeditor5-find-and-replace": "^36.x",
+                "@ckeditor/ckeditor5-font": "^36.x",
+                "@ckeditor/ckeditor5-heading": "^36.x",
+                "@ckeditor/ckeditor5-horizontal-line": "^36.x",
+                "@ckeditor/ckeditor5-html-support": "^36.x",
+                "@ckeditor/ckeditor5-image": "^36.x",
+                "@ckeditor/ckeditor5-indent": "^36.x",
+                "@ckeditor/ckeditor5-link": "^36.x",
+                "@ckeditor/ckeditor5-list": "^36.x",
+                "@ckeditor/ckeditor5-paragraph": "^36.x",
+                "@ckeditor/ckeditor5-remove-format": "^36.x",
+                "@ckeditor/ckeditor5-source-editing": "^36.x",
+                "@ckeditor/ckeditor5-special-characters": "^36.x",
+                "@ckeditor/ckeditor5-table": "^36.x",
+                "@ckeditor/ckeditor5-theme-lark": "^36.x",
+                "@ckeditor/ckeditor5-typing": "^36.x",
+                "@ckeditor/ckeditor5-upload": "^36.x",
                 "@ckeditor/ckeditor5-vue2": "^3.0.1",
                 "@elan-ev/reststate-vuex": "~1.0.5",
                 "@fullcalendar/core": "^4.3.1",
@@ -62,7 +68,7 @@
                 "buffer": "^6.0.3",
                 "chart.js": "^2.9.4",
                 "chartist": "0.11.4",
-                "ckeditor5-math": "34.1.1",
+                "ckeditor5-math": "^36.x",
                 "colorpare": "^2.2.0",
                 "cropperjs": "1.5.9",
                 "css-loader": "^5.0.1",
@@ -1998,26 +2004,13 @@
             "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
             "dev": true
         },
-        "node_modules/@ckeditor/ckeditor5-adapter-ckfinder": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-34.2.0.tgz",
-            "integrity": "sha512-KsEYApU2VCmUsF2Np5VD657dzrvMZTBUgbPAjedghmFvPidpbuhj/fyvdbafbbHMaBhF9uXFTucXqnR7wq4bRw==",
-            "dev": true,
-            "dependencies": {
-                "ckeditor5": "^34.2.0"
-            },
-            "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
-            }
-        },
         "node_modules/@ckeditor/ckeditor5-alignment": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-34.2.0.tgz",
-            "integrity": "sha512-LpkTL67oaqB2ADLwBPXIFM2iqWSZnCG8OhEjjs7Piuyy7aUudShkbhKwqAhvb37b+MiGYCwuz/HnJlIWAD407Q==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-36.0.1.tgz",
+            "integrity": "sha512-9JfoV6hlJap3Ympgf3nlNQwj+yJMc0GtGoY3LUC6rg+snPJGjDhjJNBqM5rhr/+HWKOCMrx7OaczS3yJArXW5g==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2025,12 +2018,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-autoformat": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-34.2.0.tgz",
-            "integrity": "sha512-751X2LplWs690MoNA97oXNEk/ZKWgO/iDXFM0peD2dN7X51pSG6Ats6WYAxrkVltCZB60ZbpQ7XEeCrbhxmrlw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-36.0.1.tgz",
+            "integrity": "sha512-kve+Ergl40L6DzbtvyTMhbwfMZgpl0SJgsAzukQ72OyvJykQywworJ3zt/PgLCJKD+EKN80X9nR8kfBzXRG/vw==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2038,12 +2031,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-basic-styles": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-34.2.0.tgz",
-            "integrity": "sha512-tnfs5K17cY25DrAuFg6owJQYtZ/+cC9er7KfswL5DVWLZSkHHYnt3Yhx6zhhws4mnQf4ETxG9WKWq5JqXu/5lA==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-36.0.1.tgz",
+            "integrity": "sha512-5qbgzsgmJP7lecf78sy6QpqbsF2BLs7WxziMrJUXQytgq4S7o+Q/uqGF/itpkQMBBnLulRFJ8/x055iOBugreQ==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2051,220 +2044,160 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-block-quote": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-34.2.0.tgz",
-            "integrity": "sha512-W6ht+2eO/qV4lwEwV7tEWvNxXfj1HIia7GrSjT2z2gyUYLwhjZQDIc1x4ds6517znBgMfLiDU1tH3JzqBaFQqw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-36.0.1.tgz",
+            "integrity": "sha512-kLvkHGiu5lAnPiUnRUc0M0Nlls179PmcOvX+YIIp62YBYTxG/R6oCC5clnnhodNiDQBEgwbxqoqTKNSkOX0VWw==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-build-classic": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-34.2.0.tgz",
-            "integrity": "sha512-nXpZWEkHPX0VgFaf1tk4EwcrvPD6MF7ZvRQDm9WdOp8LvMX/pRqvJFbXxKkqPEB4ROrpDKZ0NEs+IdkhiY92zg==",
-            "dev": true,
-            "dependencies": {
-                "@ckeditor/ckeditor5-adapter-ckfinder": "^34.2.0",
-                "@ckeditor/ckeditor5-autoformat": "^34.2.0",
-                "@ckeditor/ckeditor5-basic-styles": "^34.2.0",
-                "@ckeditor/ckeditor5-block-quote": "^34.2.0",
-                "@ckeditor/ckeditor5-ckbox": "^34.2.0",
-                "@ckeditor/ckeditor5-ckfinder": "^34.2.0",
-                "@ckeditor/ckeditor5-cloud-services": "^34.2.0",
-                "@ckeditor/ckeditor5-easy-image": "^34.2.0",
-                "@ckeditor/ckeditor5-editor-classic": "^34.2.0",
-                "@ckeditor/ckeditor5-essentials": "^34.2.0",
-                "@ckeditor/ckeditor5-heading": "^34.2.0",
-                "@ckeditor/ckeditor5-image": "^34.2.0",
-                "@ckeditor/ckeditor5-indent": "^34.2.0",
-                "@ckeditor/ckeditor5-link": "^34.2.0",
-                "@ckeditor/ckeditor5-list": "^34.2.0",
-                "@ckeditor/ckeditor5-media-embed": "^34.2.0",
-                "@ckeditor/ckeditor5-paragraph": "^34.2.0",
-                "@ckeditor/ckeditor5-paste-from-office": "^34.2.0",
-                "@ckeditor/ckeditor5-table": "^34.2.0",
-                "@ckeditor/ckeditor5-typing": "^34.2.0"
+        "node_modules/@ckeditor/ckeditor5-clipboard": {
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-36.0.1.tgz",
+            "integrity": "sha512-CFh5oO29dUXwsUf/BPM8g5l8MV3hiG27/h6fpC1qRUTAVXDAj43j+cfYYs8MwNi3hv0c/1KyT1bLySqQ/LZctw==",
+            "dev": true,
+            "dependencies": {
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
+                "@ckeditor/ckeditor5-widget": "^36.0.1",
+                "lodash-es": "^4.17.11"
             },
             "engines": {
                 "node": ">=14.0.0",
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-build-decoupled-document": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-decoupled-document/-/ckeditor5-build-decoupled-document-34.2.0.tgz",
-            "integrity": "sha512-Y73DYKFK+VwHNcH/9Y0PZCKBnsEkUL4siYwSem7dWG9QxjfWblaSl0dBUpxcEGLInRzfyMDRGl4COttM0vqT+g==",
-            "dev": true,
-            "dependencies": {
-                "@ckeditor/ckeditor5-adapter-ckfinder": "^34.2.0",
-                "@ckeditor/ckeditor5-alignment": "^34.2.0",
-                "@ckeditor/ckeditor5-autoformat": "^34.2.0",
-                "@ckeditor/ckeditor5-basic-styles": "^34.2.0",
-                "@ckeditor/ckeditor5-block-quote": "^34.2.0",
-                "@ckeditor/ckeditor5-ckbox": "^34.2.0",
-                "@ckeditor/ckeditor5-ckfinder": "^34.2.0",
-                "@ckeditor/ckeditor5-cloud-services": "^34.2.0",
-                "@ckeditor/ckeditor5-easy-image": "^34.2.0",
-                "@ckeditor/ckeditor5-editor-decoupled": "^34.2.0",
-                "@ckeditor/ckeditor5-essentials": "^34.2.0",
-                "@ckeditor/ckeditor5-font": "^34.2.0",
-                "@ckeditor/ckeditor5-heading": "^34.2.0",
-                "@ckeditor/ckeditor5-image": "^34.2.0",
-                "@ckeditor/ckeditor5-indent": "^34.2.0",
-                "@ckeditor/ckeditor5-link": "^34.2.0",
-                "@ckeditor/ckeditor5-list": "^34.2.0",
-                "@ckeditor/ckeditor5-media-embed": "^34.2.0",
-                "@ckeditor/ckeditor5-paragraph": "^34.2.0",
-                "@ckeditor/ckeditor5-paste-from-office": "^34.2.0",
-                "@ckeditor/ckeditor5-table": "^34.2.0",
-                "@ckeditor/ckeditor5-typing": "^34.2.0"
+        "node_modules/@ckeditor/ckeditor5-code-block": {
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-36.0.1.tgz",
+            "integrity": "sha512-jCWIM7WWg2ohC43/3cOKAqBTe2AVBxE3mfpLTqZ7W1TC7RZgRbzsrxzy5ZnjN3Ze9N6e7b+n1cUEMFn+ilhgbw==",
+            "dev": true,
+            "dependencies": {
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-build-inline": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-inline/-/ckeditor5-build-inline-34.2.0.tgz",
-            "integrity": "sha512-Y3EvX5ptWMuSeQG8xDvetrtEV5CPwFmYymbgKK4xRTdmU3J4JKn5jh0vkuqoIh9cSK+mF9NDALptXvaCshkR/g==",
-            "dev": true,
-            "dependencies": {
-                "@ckeditor/ckeditor5-adapter-ckfinder": "^34.2.0",
-                "@ckeditor/ckeditor5-autoformat": "^34.2.0",
-                "@ckeditor/ckeditor5-basic-styles": "^34.2.0",
-                "@ckeditor/ckeditor5-block-quote": "^34.2.0",
-                "@ckeditor/ckeditor5-ckbox": "^34.2.0",
-                "@ckeditor/ckeditor5-ckfinder": "^34.2.0",
-                "@ckeditor/ckeditor5-cloud-services": "^34.2.0",
-                "@ckeditor/ckeditor5-easy-image": "^34.2.0",
-                "@ckeditor/ckeditor5-editor-inline": "^34.2.0",
-                "@ckeditor/ckeditor5-essentials": "^34.2.0",
-                "@ckeditor/ckeditor5-heading": "^34.2.0",
-                "@ckeditor/ckeditor5-image": "^34.2.0",
-                "@ckeditor/ckeditor5-indent": "^34.2.0",
-                "@ckeditor/ckeditor5-link": "^34.2.0",
-                "@ckeditor/ckeditor5-list": "^34.2.0",
-                "@ckeditor/ckeditor5-media-embed": "^34.2.0",
-                "@ckeditor/ckeditor5-paragraph": "^34.2.0",
-                "@ckeditor/ckeditor5-paste-from-office": "^34.2.0",
-                "@ckeditor/ckeditor5-table": "^34.2.0",
-                "@ckeditor/ckeditor5-typing": "^34.2.0"
+        "node_modules/@ckeditor/ckeditor5-core": {
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-36.0.1.tgz",
+            "integrity": "sha512-50O+DYXtaf4dMOn+3mGUvfYiE2qsCgVn114WQj7Tj3pZl5w+pAIv/2P+9cBB2Kb7QxgPZqZ7bvsi9wHqIJ6KCw==",
+            "dev": true,
+            "dependencies": {
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
+                "lodash-es": "^4.17.15"
             },
             "engines": {
                 "node": ">=14.0.0",
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-ckbox": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-34.2.0.tgz",
-            "integrity": "sha512-vjD/i5ya4KbjltjkHVXlNPMo6Gsgm/1Xg6ENdW3SGLmJm9So5M4QqhQZQPEPNISNd5Pu5OVyHmX/F0G/rFUqOA==",
+        "node_modules/@ckeditor/ckeditor5-dev-translations": {
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-36.0.1.tgz",
+            "integrity": "sha512-zFIJRJBqvBTZrmlFTbYGk1Z94KYh2bTm3jmpF5V9ty5Z07o9mLzsXLHbFWBZv5yaF2menNTDhjgATb57kzDrtQ==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "@babel/parser": "^7.18.9",
+                "@babel/traverse": "^7.18.9",
+                "chalk": "^4.0.0",
+                "pofile": "^1.0.9",
+                "rimraf": "^3.0.2",
+                "webpack-sources": "^2.0.1"
             },
             "engines": {
-                "node": ">=14.0.0",
+                "node": ">=16.0.0",
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-ckfinder": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-34.2.0.tgz",
-            "integrity": "sha512-zZfCxjcw+mJGGZaZAgmU8a1iwOsov2T/flT6AxZPVVyTXQlaAN4reQ3MH2K45E/2kSc04QNSfH7iSHubxtfFVA==",
+        "node_modules/@ckeditor/ckeditor5-dev-translations/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": {
-                "ckeditor5": "^34.2.0"
+                "color-convert": "^2.0.1"
             },
             "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
+                "node": ">=8"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-clipboard": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-34.2.0.tgz",
-            "integrity": "sha512-OcdFj9yT7C5yKPHtTKWvjGMJLpigrkdJN4AZhdJJPigiuYG0c5mnCuTvOYxp2kVijFWRjhPlwIyPVTtDZ0vnzw==",
+        "node_modules/@ckeditor/ckeditor5-dev-translations/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": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
-                "@ckeditor/ckeditor5-widget": "^34.2.0",
-                "lodash-es": "^4.17.11"
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
             },
             "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
+                "node": ">=10"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/chalk?sponsor=1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-cloud-services": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-34.2.0.tgz",
-            "integrity": "sha512-4ePDTu9TKgQk1duby7Sp8kGct9TzWlZWnE/1IoG6sDUUUF3iVydrc7GlKC5hkB3BsnBChQS24kj8iUrrFFcGnw==",
+        "node_modules/@ckeditor/ckeditor5-dev-translations/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": {
-                "ckeditor5": "^34.2.0"
+                "color-name": "~1.1.4"
             },
             "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
+                "node": ">=7.0.0"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-code-block": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-34.2.0.tgz",
-            "integrity": "sha512-jhQ5YBVklVOrjL6G0oYeVMo/2PIryNWXxYuTz8iZuw5ZgONy6AmYrzryN+ej0xFAN3DtmuW58weKR8jxdgW6Nw==",
+        "node_modules/@ckeditor/ckeditor5-dev-translations/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,
-            "dependencies": {
-                "ckeditor5": "^34.2.0"
-            },
             "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
+                "node": ">=8"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-core": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-34.2.0.tgz",
-            "integrity": "sha512-6K0aToibRt28sCVYpMqdSKGvMifjwziqxLxyEh38CyDZJBUf7QPEAPlEpKAFTisHNEmC4471tr8UPpvNgqUXGA==",
+        "node_modules/@ckeditor/ckeditor5-dev-translations/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": {
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
-                "lodash-es": "^4.17.15"
+                "has-flag": "^4.0.0"
             },
             "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
+                "node": ">=8"
             }
         },
         "node_modules/@ckeditor/ckeditor5-dev-utils": {
-            "version": "30.5.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-30.5.0.tgz",
-            "integrity": "sha512-R5oC9ka68X7NwafM5rFvIv6q0qT2kMsBkRikdEygx7cmGkV4dy7uM5HuOBUuIoLW7Md2o3QfkD3dnk6OdzuuJw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-36.0.1.tgz",
+            "integrity": "sha512-fANvAuQ2s2fixSaerpj3Mb3AYhcapau92vVSvtIgFh3cjLiH1IHomdhnqnhbMajO59LmTqqyFt2G3nKhMuZCng==",
             "dev": true,
             "dependencies": {
-                "@babel/parser": "^7.18.9",
-                "@babel/traverse": "^7.18.9",
-                "@ckeditor/ckeditor5-dev-webpack-plugin": "^30.5.0",
+                "@ckeditor/ckeditor5-dev-translations": "^36.0.1",
                 "chalk": "^3.0.0",
                 "cli-cursor": "^3.1.0",
                 "cli-spinners": "^2.6.1",
                 "cssnano": "^5.0.0",
                 "del": "^5.0.0",
-                "escodegen": "^1.9.0",
                 "fs-extra": "^8.1.0",
                 "is-interactive": "^1.0.0",
                 "javascript-stringify": "^1.6.0",
-                "pofile": "^1.0.9",
                 "postcss": "^8.4.12",
                 "postcss-import": "^14.1.0",
                 "postcss-loader": "^4.3.0",
@@ -2278,11 +2211,8 @@
                 "ts-loader": "^9.3.0"
             },
             "engines": {
-                "node": ">=14.0.0",
+                "node": ">=16.0.0",
                 "npm": ">=5.7.1"
-            },
-            "peerDependencies": {
-                "webpack": "^4.43.0 || ^5.24.0"
             }
         },
         "node_modules/@ckeditor/ckeditor5-dev-utils/node_modules/ansi-styles": {
@@ -2388,111 +2318,26 @@
                 "node": ">=8"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-dev-webpack-plugin": {
-            "version": "30.5.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-dev-webpack-plugin/-/ckeditor5-dev-webpack-plugin-30.5.0.tgz",
-            "integrity": "sha512-mErNKfGd8XBjJxB7K7yCDnNq4pLQKbEjwJHf9g2EW4gOD1U55rgPc1XpmgfxhMj44QQ8YOZXAQ/Y/55AN7GATA==",
-            "deprecated": "This package is no longer maintained. Please, read the migration path: https://github.com/ckeditor/ckeditor5-dev/releases/tag/v32.0.0.",
-            "dev": true,
-            "dependencies": {
-                "@ckeditor/ckeditor5-dev-utils": "^30.5.0",
-                "chalk": "^4.0.0",
-                "rimraf": "^3.0.2",
-                "semver": "^7.3.4",
-                "webpack-sources": "^2.0.1"
-            },
-            "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
-            },
-            "peerDependencies": {
-                "webpack": "^4.43.0 || ^5.24.0"
-            }
-        },
-        "node_modules/@ckeditor/ckeditor5-dev-webpack-plugin/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/@ckeditor/ckeditor5-dev-webpack-plugin/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/@ckeditor/ckeditor5-dev-webpack-plugin/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/@ckeditor/ckeditor5-dev-webpack-plugin/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/@ckeditor/ckeditor5-dev-webpack-plugin/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/@ckeditor/ckeditor5-easy-image": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-34.2.0.tgz",
-            "integrity": "sha512-0enLOsyy8cYAb85BA+TxZqg2sDWrup62Ph31dv97EBry0+XjvD5ViEhgpr15WoY/4B3HZZbxy4W+/zJz3GmO5w==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-36.0.1.tgz",
+            "integrity": "sha512-t74s840xNPaWibgI1YcC/lHcigCY4zUyXzpXhepWe9qw4zfg58H2wK6a0AwBN+yy8mXcotDUmjXkOXgnNkJp0Q==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-editor-classic": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-34.2.0.tgz",
-            "integrity": "sha512-/iNJixrnmiZOyLb85TkGeWsPMXeKpdsAIa7KX92AxIYhW08UpgFS+X7Cp17nZ7FBNM4nmFarUz7WbGvR0n51ew==",
+        "node_modules/@ckeditor/ckeditor5-editor-balloon": {
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-36.0.1.tgz",
+            "integrity": "sha512-S8fIoqQ/A7lGyvEMUY1paZHVNevBWHJ4AvwRfYSgsG/XNjxLJClD7LRk/vT0btyTUg6KAQ9r7oAiSkaU/MfgFg==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2500,27 +2345,13 @@
                 "npm": ">=5.7.1"
             }
         },
-        "node_modules/@ckeditor/ckeditor5-editor-decoupled": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-34.2.0.tgz",
-            "integrity": "sha512-1ekbS9ooqRfzMEXcJjytRh/C3zQdSZyUvXv9HU35FtxPKBE1fX1TRfVz/oQw5/NVuC+3DzZSrk+ziwZZzN8U3w==",
-            "dev": true,
-            "dependencies": {
-                "ckeditor5": "^34.2.0",
-                "lodash-es": "^4.17.15"
-            },
-            "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
-            }
-        },
-        "node_modules/@ckeditor/ckeditor5-editor-inline": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-34.2.0.tgz",
-            "integrity": "sha512-AakaKeqbDaSjliaXjGvkoC8NSK/o19DI9NEw21cAFqV/fTTaVEx5dv0HUoODLX9dKajvrB6iSCbEkenTEY4CpA==",
+        "node_modules/@ckeditor/ckeditor5-editor-classic": {
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-36.0.1.tgz",
+            "integrity": "sha512-/euO79HzgIxILgxbqpGaMxO3f2BSGazljAGTc+aGJQ4bs9YnkxpeCc2wxYXuUzMNev2vVqhaPTvRJzg2Bb2r9w==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2529,12 +2360,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-engine": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-34.2.0.tgz",
-            "integrity": "sha512-9/i6TZ+Sy5T6hnuCtmeLTfwLSY8LaS7qFkW6gsM9NEB+LSSu930GP0Ss30Nw6dYo/JmYiQEpkiRJzKYIjrH8Pg==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-36.0.1.tgz",
+            "integrity": "sha512-Ze2omTguUggwiL9vvLvPk+QpjEBbIOPS1Hi/ROYlsW8QSdnPbSTv+6rCIYThqJMFeonxLZWV5XwbcqpgSAs0MA==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2543,14 +2374,13 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-enter": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-34.2.0.tgz",
-            "integrity": "sha512-QxaT3jH0qsZaE0Egj1D19o6YBz/EJKs0am5ny5hDnd5sntvIUk9PNGEu/v3mRmNqZqrhRu4BuedvdRzYWseUjw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-36.0.1.tgz",
+            "integrity": "sha512-FHZ43bltDGFyihfBOTwBOgsS2mMU2ATR9xxFEKlDP+8+P1bq4e0YkC3t4PuwtHIZMvNHiFxqvmFtA2eznGS7sQ==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0"
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2558,12 +2388,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-essentials": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-34.2.0.tgz",
-            "integrity": "sha512-1FID6r3CknWPdQQavT5U+OQ9+GwQQNI6hJNhWCfPxtvYhtR/SQp/MV+Lsn2e5Kt9VkCQkN7HdeYp5vumT84BZw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-36.0.1.tgz",
+            "integrity": "sha512-f6yEeSA75/hAqK+hZ09LnUj+2PSXFSTHFBzC32WKr+e2qlTx3/mArvwnnQcTj7lo7SuUmctpg7X5DD3/Rcg+HA==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2571,14 +2401,14 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-find-and-replace": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-34.2.0.tgz",
-            "integrity": "sha512-tpIfWGf6CqKtxv5WXNAotaPV1pl+Obwstmk0N81cw7a3pSR5dCs4EiwJMY2n0RrxB4U/IhoEpLXz8Vo9pCUpCw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-36.0.1.tgz",
+            "integrity": "sha512-UX8sAEpuUy017EMDrQqrKy+T6UkmXOezi1SNdtG/AdxUhvtD4yDjwAaFLnbMTMyDUFor21Tao3Lvs6aj5n4r4w==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
-                "ckeditor5": "^34.2.0",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2587,12 +2417,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-font": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-34.2.0.tgz",
-            "integrity": "sha512-hSTxD0D+ad8yNsyM8a3SXvqes7oQah1PEcC3CG3jXmVnVjikWd+iAL959R2UnkJBSY5AZKgF3MCFC69pBIBdxQ==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-36.0.1.tgz",
+            "integrity": "sha512-mn6nAG9AQ7bC7ywsEf5+pE09yhPSGupttfZ94bzjqTtQAAEahkiD/ympzfypWyJWCkTUlqa0/ZmF22nqcNlTEQ==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2600,12 +2430,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-heading": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-34.2.0.tgz",
-            "integrity": "sha512-I/0H06LvksVPW99g2uGb6vQUX/T7o9DAUF1dMcCC5SgSXsqDmO3pdC50uKwSeLaqUxUhVFF0mjBo0inQZVX9fQ==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-36.0.1.tgz",
+            "integrity": "sha512-elVL6y8kFFB4wCjmVTYsbx5vFoNCsPn9fAJ4/T2tElb9wszs4BsbMjScUNwVomOxuSPy3x6Qt4HG1NFVoh1FKg==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2613,12 +2443,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-horizontal-line": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-34.2.0.tgz",
-            "integrity": "sha512-BblqWFHOGB4fcKsHm6uH8gkvKA3+76hEBauovqOQLzgAvfC4zNpvcOVrt24hoF7b818Iisgea88eslljL4yX7A==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-36.0.1.tgz",
+            "integrity": "sha512-ht3mRhImB4BNVYzr73k8syOiXLM3UNBBvaPGmbFylXiAj9+Hbh4EFR0i8e1v5fFCtGBMilBRZeFN1QlMYXHtvg==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2626,12 +2456,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-html-support": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-34.2.0.tgz",
-            "integrity": "sha512-al5WbJ+pMB9YUhOnx9k9haAo28WNe06wZSvDiPL+wpBmZ+Xa9vZnVS4Rf/H4PSZjQT/GnOkeo5vdEhSjd5bA4Q==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-36.0.1.tgz",
+            "integrity": "sha512-ofOZb+RKKNXikbigyArewijN5lnmCFDUp5k9GTUWpjDCNwEgx+sdBU6qqMKqciJGxY4/gM4qLJ4VQ56dv7r0Wg==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2640,13 +2470,13 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-image": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-34.2.0.tgz",
-            "integrity": "sha512-JY6uETyhIFjOk4kky6HrpNg8JFYVz0mU654qZ7o+a5J+L55cOIC8JDMA8VUa5Opn2XDwZb4Q91ArX1hIJSGRQA==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-36.0.1.tgz",
+            "integrity": "sha512-HElSvvBXL4kmwtwrAw28oIuJN1gXMr0kOYnR+sLkJGlfeymOQ4RKEqW3vOPMmN6s2RMJVoNkpytPbhzalFn3Sg==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "ckeditor5": "^34.2.0",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2655,12 +2485,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-indent": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-34.2.0.tgz",
-            "integrity": "sha512-6yGuUI06C6bTpNXvUXh5/AbmYoV0FvUW23wIsarml2SgdBi/NCFDHCJsFcJn33uRQgEuZHaO2ORhOe6yQfBBFQ==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-36.0.1.tgz",
+            "integrity": "sha512-3E+3UCP9Krr41yP8g5a/QmJEJCChOFWdrLShi0YYODkJlhI/UUJFWVDTx54x1GnnDhXt8HhpOVGHCo14+KuRfA==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2678,13 +2508,13 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-link": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-34.2.0.tgz",
-            "integrity": "sha512-rqw2Pu3NY2VTE6hpeLoOnH2FOMRZLZgo2biWVitHR9upzv1x50PngJujoaWerTB4dHbWz+W2M1uc+UZADm/P1A==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-36.0.1.tgz",
+            "integrity": "sha512-u0E22wCzgAWMlg5BemYAUHws6zausSek+tmI6VmTRibogsUsfso3JnWI0RXNiEd4i2w1wRspvb9S/D8iy7n4fA==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "ckeditor5": "^34.2.0",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2693,27 +2523,13 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-list": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-34.2.0.tgz",
-            "integrity": "sha512-mP/XlvFDDQL4PDKOZuFWPHtRikSPbx6vARh/2INTsa41AURN35O86hESTwMhz+ZqmTe4av1KRPZYtVhgS3xGeA==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-36.0.1.tgz",
+            "integrity": "sha512-v4h5iXCqbOpjaiQRZNp1SExU7BzKfcDU9VUGZpUzFLC0S1JKVO1DAJKMxhqgUCvgGrTOrYHZoGaqNWQZXXwZQg==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "ckeditor5": "^34.2.0"
-            },
-            "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
-            }
-        },
-        "node_modules/@ckeditor/ckeditor5-media-embed": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-34.2.0.tgz",
-            "integrity": "sha512-XQxTAwtZ0Fe6eph+5equH8DGtcHMj6ktJ54g/aQKyC4UxHb5JFSQ8y9Ud0IQfH12lT1uyagDOnC8rY2AUKGBGA==",
-            "dev": true,
-            "dependencies": {
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "ckeditor5": "^34.2.0"
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2721,27 +2537,14 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-paragraph": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-34.2.0.tgz",
-            "integrity": "sha512-xcXUsXz3PY355gJ8u+y0qFLWcScYo0CZPZSbs5YwDz7g9lV8foVVzzdW7ITYwr5/YIpJsjjxYC+dDUqsH6EpBQ==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-36.0.1.tgz",
+            "integrity": "sha512-NF1PH9WVfY81vkohj6GV1W/u1ogbZnfy60wrDy8Qp3iaFK1LJBsKNz3q1tf0WkBghaX/MUjR9E06l/OrTtaTZw==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0"
-            },
-            "engines": {
-                "node": ">=14.0.0",
-                "npm": ">=5.7.1"
-            }
-        },
-        "node_modules/@ckeditor/ckeditor5-paste-from-office": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-34.2.0.tgz",
-            "integrity": "sha512-NT3NYBeQqibswfj5w1WjvaXFk1XPMjiJZQKR8qoi5o5jH7bwmhlnsZM7cZdYgZHS8rX6JSLAtD6A1XRD3deRfQ==",
-            "dev": true,
-            "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2749,12 +2552,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-remove-format": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-34.2.0.tgz",
-            "integrity": "sha512-3eYXu5SUusnoqllEJnXN2mvtJW26W73ntNxEj+5JTdZ5TxvZurqSUJM00GQuDXdoyZN52SOFz980rgbszegMEg==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-36.0.1.tgz",
+            "integrity": "sha512-bOE4s5e+DiTujGm7L2AQLOtv4/hV5dQkv3czrC3OZ6wtXxAnSYHb3wWPUeIrtJTOisri4Pf9oL6If7uFKWkZNg==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2762,14 +2565,14 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-select-all": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-34.2.0.tgz",
-            "integrity": "sha512-/Va85RwNlmpgQ7vWxiAFLyzXhXrWiA5Pde7yCNcc6hJpqnaGcqvscOJoZLMk5oASTvMnPhQIgNSMDN/oq6ej0Q==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-36.0.1.tgz",
+            "integrity": "sha512-8rPxcenTAoqXy1gleZvfsc7VD0IltPFq8R+blD4JL+sSMMDUtKhPuok4TA9h6Yh0nP6LfRK2fBUKIWH3xRPABg==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0"
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2777,13 +2580,13 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-source-editing": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-34.2.0.tgz",
-            "integrity": "sha512-FI/2czbYl58M5mkIOtokeidGTqAcxZyOZ5PsC7Mx06o7PNnNsW7/vjG7U5i2jpnWweSfZPyGVb3P5xLfgJQ0xg==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-36.0.1.tgz",
+            "integrity": "sha512-8Hxbmt60G530zDhpVHDeY+USdRKrdGn0spx1YREVbWAhQ1kMV6FUWDGtDJx9Rbj8BRe19AtlT40ctSbKS/XVzQ==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-theme-lark": "^34.2.0",
-                "ckeditor5": "^34.2.0"
+                "@ckeditor/ckeditor5-theme-lark": "^36.0.1",
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2791,12 +2594,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-special-characters": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-34.2.0.tgz",
-            "integrity": "sha512-7et0PY5MZaPwOpEz7pdajxm3ENVzRAuh4RBG0TyV6aJHbK/Z8d3FJM8S3dse/DiwzOf+oTQVOWALIx2cNYBcUA==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-36.0.1.tgz",
+            "integrity": "sha512-vYloQvPPU1aGJAkjDWTZvU9BbK7CLsyVg8FV+NSSbdPKAY6K4IPS52jvbCDZBHQqzmeFVEy5U8iMhbZxYdkI6g==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0"
+                "ckeditor5": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2804,12 +2607,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-table": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-34.2.0.tgz",
-            "integrity": "sha512-ALJAldO7x+gvY7AeOg7j9PuG0ftQekkPTN3QvLHMqDFBfeRh76fK7xPGz+A42DeSFGIcMQ8IS9jpiT4PRKC7cw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-36.0.1.tgz",
+            "integrity": "sha512-ishbq3Rp8n7aypswmbqAVWT5W0iYZfAfm6wS+dpSoFqzAPX6ko8+bnoTkq+Wbs1S4+JDaua7QOJw9A1L1cv17A==",
             "dev": true,
             "dependencies": {
-                "ckeditor5": "^34.2.0",
+                "ckeditor5": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2818,12 +2621,12 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-theme-lark": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-34.2.0.tgz",
-            "integrity": "sha512-oXFtkgUs7g6u9n4KwXflLptsqIh+XMHyuZXq1//iBLKFQKpCM0NVvf7fPM4hZNKB96/khxN238hSH5bHstS6Zw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-36.0.1.tgz",
+            "integrity": "sha512-R7VnSjET52mxHEAt6+GxSHmBKddsRjkVHDxbd13GTkDl01SKjbYfVF+Ek6iVuf6eVyNu6eedRJugShZSsHhXiA==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-ui": "^34.2.0"
+                "@ckeditor/ckeditor5-ui": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2831,14 +2634,14 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-typing": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-34.2.0.tgz",
-            "integrity": "sha512-Eq8mhb8M7RwUmeVUantN+PrqxDELXCvLCcpixy+ge/5lM8wxVcn/SonfUL9PLqs2eluRc4Bx+mstMQySglkVkw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-36.0.1.tgz",
+            "integrity": "sha512-NwXQxNxf/LLANiiteEVaLr1ZzvJd7y6+O5a6x0Tv9Uuheu80aw2Axm3icneODt05G/XT+iJmCHzUYdEiCsHUaw==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2847,13 +2650,13 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-ui": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-34.2.0.tgz",
-            "integrity": "sha512-XL561G/e3b1YLGHNjLxS9IgoVn4BSugHmidEXYNUTMLATRCKld1XMUKFsB/wm3DwLBUfWn4d2j3qdcO2CnDuBg==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-36.0.1.tgz",
+            "integrity": "sha512-wPqAdXUZnEAD3XPvS5vEGU2kxzTQah3wne3B1esdlbJ7dSLZDdx8r1dyKyp3/WCpCT8G+PqGvSUrlnqcy7WI5A==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -2862,14 +2665,14 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-undo": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-34.2.0.tgz",
-            "integrity": "sha512-WW3f6ku36DpKhUxXACfNFm2DaKcJ2Rz0EFEkol0+offpOjltJnUEJ7LvfOthGdMvGz+5lmnySTbkvOvNruq1Ew==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-36.0.1.tgz",
+            "integrity": "sha512-TBm6TAnur59f5hqlgUZ89NV3cPQw0xqqpSuVMFrvFruPmPiIay2E34Mapb5KRXr83AEPhNN8GAE2YM7HmMqKrQ==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0"
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
+                "@ckeditor/ckeditor5-ui": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2877,14 +2680,14 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-upload": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-34.2.0.tgz",
-            "integrity": "sha512-HBJr0/wFE+R13aIXRF/xJVQqo6Yh34EgbnrNYYhlNiHG40Vr6079eCuoZrnY3vwEsjtFNnTRQ433+RqxJ652zw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-36.0.1.tgz",
+            "integrity": "sha512-932vnvO++SzfZ6EpNkOj6PPKN6vVgn5aW3gu0c1D51cF9KkCFiaMhBDsOzDRVvq/bbnDqUQ9v3j1cNo2UlC8oA==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0"
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -2892,9 +2695,9 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-utils": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-34.2.0.tgz",
-            "integrity": "sha512-jHJV2S8DzmpVvd3jdercY6HsGRAwpm/MK79Rs/Mrc3NNYKzN9SVFs/NLbrELNoMZeJ1WKt5BwKgBY+PEOpfyLw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-36.0.1.tgz",
+            "integrity": "sha512-TW/YRb0OQe88IyqRoq2xS02iXOG82NQybzMuFDnGyCaFV0hA/9ysOyWwFpxDLcPDhDgVJZIxuwvFaek9x+uCMA==",
             "dev": true,
             "dependencies": {
                 "lodash-es": "^4.17.15"
@@ -2915,17 +2718,17 @@
             }
         },
         "node_modules/@ckeditor/ckeditor5-widget": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-34.2.0.tgz",
-            "integrity": "sha512-h2iF/RRK+GjvVHb6VY7+slnIV+IdWdLfZS83OECQNYp2e+6kN/JZp+PxiyYC4asPTraL43zJGzlgT53Jof77vw==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-36.0.1.tgz",
+            "integrity": "sha512-on92cCRYLWTfwrpnFi5z4FY7NDhY+X+p6yuYStnB9d9jM3FJi3/7y2q9ojr8fSMot4pQsXCiFXzaF6yez+77wA==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-enter": "^34.2.0",
-                "@ckeditor/ckeditor5-typing": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
+                "@ckeditor/ckeditor5-enter": "^36.0.1",
+                "@ckeditor/ckeditor5-typing": "^36.0.1",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
                 "lodash-es": "^4.17.15"
             },
             "engines": {
@@ -6163,23 +5966,23 @@
             "dev": true
         },
         "node_modules/ckeditor5": {
-            "version": "34.2.0",
-            "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-34.2.0.tgz",
-            "integrity": "sha512-CxSMAzpN20HYZJQRw0AQJ/saLLXMz3qBywZOo0IKxVwwUE96PZudV08G/OjgciGrzQ/GjhpW/C+wdciMQ4cpzQ==",
+            "version": "36.0.1",
+            "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-36.0.1.tgz",
+            "integrity": "sha512-9zKX7WIRKSDviM0s41VvW8JtDiRtNrhwrzYj4XCjGpZyIXsUKttdJYHIP5iP1MdfZU/hCvpgSUn2fmRPxFbg+Q==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-clipboard": "^34.2.0",
-                "@ckeditor/ckeditor5-core": "^34.2.0",
-                "@ckeditor/ckeditor5-engine": "^34.2.0",
-                "@ckeditor/ckeditor5-enter": "^34.2.0",
-                "@ckeditor/ckeditor5-paragraph": "^34.2.0",
-                "@ckeditor/ckeditor5-select-all": "^34.2.0",
-                "@ckeditor/ckeditor5-typing": "^34.2.0",
-                "@ckeditor/ckeditor5-ui": "^34.2.0",
-                "@ckeditor/ckeditor5-undo": "^34.2.0",
-                "@ckeditor/ckeditor5-upload": "^34.2.0",
-                "@ckeditor/ckeditor5-utils": "^34.2.0",
-                "@ckeditor/ckeditor5-widget": "^34.2.0"
+                "@ckeditor/ckeditor5-clipboard": "^36.0.1",
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
+                "@ckeditor/ckeditor5-enter": "^36.0.1",
+                "@ckeditor/ckeditor5-paragraph": "^36.0.1",
+                "@ckeditor/ckeditor5-select-all": "^36.0.1",
+                "@ckeditor/ckeditor5-typing": "^36.0.1",
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-undo": "^36.0.1",
+                "@ckeditor/ckeditor5-upload": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
+                "@ckeditor/ckeditor5-widget": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -6187,19 +5990,19 @@
             }
         },
         "node_modules/ckeditor5-math": {
-            "version": "34.1.1",
-            "resolved": "https://registry.npmjs.org/ckeditor5-math/-/ckeditor5-math-34.1.1.tgz",
-            "integrity": "sha512-KS0YDwXpqa1oojHVsCQyHZbpM/PJ1sGtHgeWk3yWd/gIICJ1/iDqH9dTycTHJrcCwPoZAfJNC/iPGD732H74XQ==",
+            "version": "36.0.2",
+            "resolved": "https://registry.npmjs.org/ckeditor5-math/-/ckeditor5-math-36.0.2.tgz",
+            "integrity": "sha512-7KZbMxF/yjwZ47xt8U3jgP8xS7cYX9RR991f1FdyI1ThSUBtqWkAJj28xAnE7pOzEzQbBamzzBuhj/vruA00Rg==",
             "dev": true,
             "dependencies": {
-                "@ckeditor/ckeditor5-clipboard": "^34.1.0",
-                "@ckeditor/ckeditor5-core": "^34.1.0",
-                "@ckeditor/ckeditor5-engine": "^34.1.0",
+                "@ckeditor/ckeditor5-clipboard": "^36.0.1",
+                "@ckeditor/ckeditor5-core": "^36.0.1",
+                "@ckeditor/ckeditor5-engine": "^36.0.1",
                 "@ckeditor/ckeditor5-inspector": "^3.0.0",
-                "@ckeditor/ckeditor5-ui": "^34.1.0",
-                "@ckeditor/ckeditor5-undo": "^34.1.0",
-                "@ckeditor/ckeditor5-utils": "^34.1.0",
-                "@ckeditor/ckeditor5-widget": "^34.1.0"
+                "@ckeditor/ckeditor5-ui": "^36.0.1",
+                "@ckeditor/ckeditor5-undo": "^36.0.1",
+                "@ckeditor/ckeditor5-utils": "^36.0.1",
+                "@ckeditor/ckeditor5-widget": "^36.0.1"
             },
             "engines": {
                 "node": ">=14.0.0",
@@ -8287,27 +8090,35 @@
             }
         },
         "node_modules/escodegen": {
-            "version": "1.14.3",
-            "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
-            "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+            "version": "2.1.0",
+            "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+            "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
             "dev": true,
             "dependencies": {
                 "esprima": "^4.0.1",
-                "estraverse": "^4.2.0",
-                "esutils": "^2.0.2",
-                "optionator": "^0.8.1"
+                "estraverse": "^5.2.0",
+                "esutils": "^2.0.2"
             },
             "bin": {
                 "escodegen": "bin/escodegen.js",
                 "esgenerate": "bin/esgenerate.js"
             },
             "engines": {
-                "node": ">=4.0"
+                "node": ">=6.0"
             },
             "optionalDependencies": {
                 "source-map": "~0.6.1"
             }
         },
+        "node_modules/escodegen/node_modules/estraverse": {
+            "version": "5.3.0",
+            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+            "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+            "dev": true,
+            "engines": {
+                "node": ">=4.0"
+            }
+        },
         "node_modules/eslint": {
             "version": "7.32.0",
             "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
@@ -8644,23 +8455,6 @@
                 "node": ">= 4"
             }
         },
-        "node_modules/eslint/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"
-            },
-            "engines": {
-                "node": ">= 0.8.0"
-            }
-        },
         "node_modules/eslint/node_modules/supports-color": {
             "version": "7.2.0",
             "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -12102,36 +11896,6 @@
                 "node": ">=0.4.0"
             }
         },
-        "node_modules/jsdom/node_modules/escodegen": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
-            "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
-            "dev": true,
-            "dependencies": {
-                "esprima": "^4.0.1",
-                "estraverse": "^5.2.0",
-                "esutils": "^2.0.2"
-            },
-            "bin": {
-                "escodegen": "bin/escodegen.js",
-                "esgenerate": "bin/esgenerate.js"
-            },
-            "engines": {
-                "node": ">=6.0"
-            },
-            "optionalDependencies": {
-                "source-map": "~0.6.1"
-            }
-        },
-        "node_modules/jsdom/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/jsesc": {
             "version": "2.5.2",
             "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -13031,51 +12795,17 @@
             }
         },
         "node_modules/optionator": {
-            "version": "0.8.3",
-            "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-            "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-            "dev": true,
-            "dependencies": {
-                "deep-is": "~0.1.3",
-                "fast-levenshtein": "~2.0.6",
-                "levn": "~0.3.0",
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2",
-                "word-wrap": "~1.2.3"
-            },
-            "engines": {
-                "node": ">= 0.8.0"
-            }
-        },
-        "node_modules/optionator/node_modules/levn": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-            "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
-            "dev": true,
-            "dependencies": {
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2"
-            },
-            "engines": {
-                "node": ">= 0.8.0"
-            }
-        },
-        "node_modules/optionator/node_modules/prelude-ls": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-            "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
-            "dev": true,
-            "engines": {
-                "node": ">= 0.8.0"
-            }
-        },
-        "node_modules/optionator/node_modules/type-check": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-            "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+            "version": "0.9.3",
+            "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+            "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
             "dev": true,
             "dependencies": {
-                "prelude-ls": "~1.1.2"
+                "@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"
             },
             "engines": {
                 "node": ">= 0.8.0"
@@ -17169,15 +16899,6 @@
                 "node": ">= 10.0.0"
             }
         },
-        "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/wrap-ansi": {
             "version": "7.0.0",
             "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
diff --git a/package.json b/package.json
index d0d17fc14f7b440745f9c6c81954c05b0f15aaed..37aae5d583c170d78737b3b1e90bf1569a04182e 100644
--- a/package.json
+++ b/package.json
@@ -26,29 +26,35 @@
         "@babel/plugin-transform-runtime": "^7.12.1",
         "@babel/preset-env": "^7.12.1",
         "@babel/register": "^7.12.1",
-        "@ckeditor/ckeditor5-alignment": "34.2.0",
-        "@ckeditor/ckeditor5-autoformat": "34.2.0",
-        "@ckeditor/ckeditor5-basic-styles": "34.2.0",
-        "@ckeditor/ckeditor5-build-classic": "34.2.0",
-        "@ckeditor/ckeditor5-build-decoupled-document": "34.2.0",
-        "@ckeditor/ckeditor5-build-inline": "34.2.0",
-        "@ckeditor/ckeditor5-code-block": "34.2.0",
-        "@ckeditor/ckeditor5-dev-utils": "^30.5.0",
-        "@ckeditor/ckeditor5-dev-webpack-plugin": "^30.5.0",
-        "@ckeditor/ckeditor5-essentials": "34.2.0",
-        "@ckeditor/ckeditor5-find-and-replace": "34.2.0",
-        "@ckeditor/ckeditor5-font": "34.2.0",
-        "@ckeditor/ckeditor5-horizontal-line": "34.2.0",
-        "@ckeditor/ckeditor5-html-support": "34.2.0",
-        "@ckeditor/ckeditor5-indent": "34.2.0",
-        "@ckeditor/ckeditor5-paragraph": "34.2.0",
-        "@ckeditor/ckeditor5-remove-format": "34.2.0",
-        "@ckeditor/ckeditor5-source-editing": "34.2.0",
-        "@ckeditor/ckeditor5-special-characters": "34.2.0",
-        "@ckeditor/ckeditor5-table": "34.2.0",
-        "@ckeditor/ckeditor5-theme-lark": "34.2.0",
-        "@ckeditor/ckeditor5-typing": "34.2.0",
-        "@ckeditor/ckeditor5-upload": "34.2.0",
+        "@ckeditor/ckeditor5-alignment": "^36.x",
+        "@ckeditor/ckeditor5-autoformat": "^36.x",
+        "@ckeditor/ckeditor5-basic-styles": "^36.x",
+        "@ckeditor/ckeditor5-block-quote": "^36.x",
+        "@ckeditor/ckeditor5-code-block": "^36.x",
+        "@ckeditor/ckeditor5-core": "^36.x",
+        "@ckeditor/ckeditor5-dev-translations": "^36.x",
+        "@ckeditor/ckeditor5-dev-utils": "^36.x",
+        "@ckeditor/ckeditor5-easy-image": "^36.x",
+        "@ckeditor/ckeditor5-editor-balloon": "^36.x",
+        "@ckeditor/ckeditor5-editor-classic": "^36.x",
+        "@ckeditor/ckeditor5-essentials": "^36.x",
+        "@ckeditor/ckeditor5-find-and-replace": "^36.x",
+        "@ckeditor/ckeditor5-font": "^36.x",
+        "@ckeditor/ckeditor5-heading": "^36.x",
+        "@ckeditor/ckeditor5-horizontal-line": "^36.x",
+        "@ckeditor/ckeditor5-html-support": "^36.x",
+        "@ckeditor/ckeditor5-image": "^36.x",
+        "@ckeditor/ckeditor5-indent": "^36.x",
+        "@ckeditor/ckeditor5-link": "^36.x",
+        "@ckeditor/ckeditor5-list": "^36.x",
+        "@ckeditor/ckeditor5-paragraph": "^36.x",
+        "@ckeditor/ckeditor5-remove-format": "^36.x",
+        "@ckeditor/ckeditor5-source-editing": "^36.x",
+        "@ckeditor/ckeditor5-special-characters": "^36.x",
+        "@ckeditor/ckeditor5-table": "^36.x",
+        "@ckeditor/ckeditor5-theme-lark": "^36.x",
+        "@ckeditor/ckeditor5-typing": "^36.x",
+        "@ckeditor/ckeditor5-upload": "^36.x",
         "@ckeditor/ckeditor5-vue2": "^3.0.1",
         "@elan-ev/reststate-vuex": "~1.0.5",
         "@fullcalendar/core": "^4.3.1",
@@ -72,7 +78,7 @@
         "buffer": "^6.0.3",
         "chart.js": "^2.9.4",
         "chartist": "0.11.4",
-        "ckeditor5-math": "34.1.1",
+        "ckeditor5-math": "^36.x",
         "colorpare": "^2.2.0",
         "cropperjs": "1.5.9",
         "css-loader": "^5.0.1",
diff --git a/resources/assets/javascripts/chunk-loader.js b/resources/assets/javascripts/chunk-loader.js
index db613fdebc7abb5fbfd05c796d831c493e9641b1..d2da2a7b14453ceec5d02a63c799c33e0b126611 100644
--- a/resources/assets/javascripts/chunk-loader.js
+++ b/resources/assets/javascripts/chunk-loader.js
@@ -76,11 +76,9 @@ export const loadChunk = (function () {
 
             case 'wysiwyg':
                 promise = import(
-                    /* webpackChunkName: "vue.js" */
+                    /* webpackChunkName: "wysiwyg.js" */
                     './chunks/wysiwyg'
-                ).then(({default: ClassicEditor}) => {
-                    return ClassicEditor;
-                });
+                );
                 break;
 
             default:
diff --git a/resources/assets/javascripts/chunks/wysiwyg.js b/resources/assets/javascripts/chunks/wysiwyg.js
index b5161b195376c2af9c8b3925a7d7ba8e8b814b29..fa218b2263f1161be9a8564d4796eaf5ee97cb49 100644
--- a/resources/assets/javascripts/chunks/wysiwyg.js
+++ b/resources/assets/javascripts/chunks/wysiwyg.js
@@ -1,305 +1,14 @@
-/* ckeditor official */
-import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment';
-import Autoformat from '@ckeditor/ckeditor5-autoformat/src/autoformat';
-import BlockQuote from '@ckeditor/ckeditor5-block-quote/src/blockquote';
-import BoldPlugin from '@ckeditor/ckeditor5-basic-styles/src/bold';
-import ClassicEditorBase from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
-import CodeBlock from '@ckeditor/ckeditor5-code-block/src/codeblock';
-import EasyImagePlugin from '@ckeditor/ckeditor5-easy-image/src/easyimage';
-import EssentialsPlugin from '@ckeditor/ckeditor5-essentials/src/essentials';
-import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';
-import FindAndReplace from '@ckeditor/ckeditor5-find-and-replace/src/findandreplace';
-import FontBackgroundColor from '@ckeditor/ckeditor5-font/src/fontbackgroundcolor.js';
-import FontColor from '@ckeditor/ckeditor5-font/src/fontcolor.js';
-import GeneralHtmlSupport from '@ckeditor/ckeditor5-html-support/src/generalhtmlsupport';
-import HeadingPlugin from '@ckeditor/ckeditor5-heading/src/heading';
-import HorizontalLine from '@ckeditor/ckeditor5-horizontal-line/src/horizontalline';
-import HtmlComment from '@ckeditor/ckeditor5-html-support/src/htmlcomment';
-import ImagePlugin from '@ckeditor/ckeditor5-image/src/image';
-import ImageUploadPlugin from '@ckeditor/ckeditor5-image/src/imageupload';
-import ImageCaptionPlugin from '@ckeditor/ckeditor5-image/src/imagecaption';
-import ImageResizePlugin from '@ckeditor/ckeditor5-image/src/imageresize';
-import ImageStylePlugin from '@ckeditor/ckeditor5-image/src/imagestyle';
-import ImageToolbarPlugin from '@ckeditor/ckeditor5-image/src/imagetoolbar';
-import Indent from '@ckeditor/ckeditor5-indent/src/indent';
-import IndentBlock from '@ckeditor/ckeditor5-indent/src/indentblock';
-import ItalicPlugin from '@ckeditor/ckeditor5-basic-styles/src/italic';
-import LanguageDe from '@ckeditor/ckeditor5-build-classic/build/translations/de.js';
-import LinkPlugin from '@ckeditor/ckeditor5-link/src/link';
-import List from '@ckeditor/ckeditor5-list/src/list';
-import ListProperties from '@ckeditor/ckeditor5-list/src/listproperties';
-import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
-import RemoveFormat from '@ckeditor/ckeditor5-remove-format/src/removeformat.js';
-import SourceEditing from '@ckeditor/ckeditor5-source-editing/src/sourceediting';
-import SpecialCharacters from '@ckeditor/ckeditor5-special-characters/src/specialcharacters.js';
-import SpecialCharactersCurrency from '@ckeditor/ckeditor5-special-characters/src/specialcharacterscurrency.js';
-import SpecialCharactersEssentials from '@ckeditor/ckeditor5-special-characters/src/specialcharactersessentials.js';
-import SpecialCharactersLatin from '@ckeditor/ckeditor5-special-characters/src/specialcharacterslatin.js';
-import SpecialCharactersMathematical from '@ckeditor/ckeditor5-special-characters/src/specialcharactersmathematical.js';
-import SpecialCharactersText from '@ckeditor/ckeditor5-special-characters/src/specialcharacterstext.js';
-import Strikethrough from '@ckeditor/ckeditor5-basic-styles/src/strikethrough.js';
-import Subscript from '@ckeditor/ckeditor5-basic-styles/src/subscript.js';
-import Superscript from '@ckeditor/ckeditor5-basic-styles/src/superscript.js';
-import Table from '@ckeditor/ckeditor5-table/src/table.js';
-import TableCaption from '@ckeditor/ckeditor5-table/src/tablecaption.js';
-import TableCellProperties from '@ckeditor/ckeditor5-table/src/tablecellproperties';
-import TableProperties from '@ckeditor/ckeditor5-table/src/tableproperties';
-import TableToolbar from '@ckeditor/ckeditor5-table/src/tabletoolbar.js';
-import TextTransformation from '@ckeditor/ckeditor5-typing/src/texttransformation';
-import Underline from '@ckeditor/ckeditor5-basic-styles/src/underline.js';
-/* ckeditor third party */
-import Mathematics from 'ckeditor5-math/src/math';
-/* ckeditor elan */
-import StudipA11YDialog, { updateVoiceLabel } from '../cke/studip-a11y-dialog/a11y-dialog.js';
-import StudipBlockQuote from '../cke/studip-quote/StudipBlockQuote.js';
-import StudipUpload from '../cke/StudipUpload.js';
-import StudipWikiLink from '../cke/wiki-link/wiki-link.js';
-import SpecialCharactersSmiley from '../cke/special_characters/SpecialCharactersSmiley.js';
-import SpecialCharactersGreek from '../cke/special_characters/SpecialCharactersGreek.js';
-import '../../stylesheets/scss/studip-cke-ui.scss';
-
-export default class ClassicEditor extends ClassicEditorBase {}
-
-ClassicEditor.builtinPlugins = [
-    ImageUploadPlugin,
-    Alignment,
-    Autoformat,
-    BlockQuote,
-    BoldPlugin,
-    CodeBlock,
-    EssentialsPlugin,
-    FindAndReplace,
-    FontColor,
-    FontBackgroundColor,
-    GeneralHtmlSupport,
-    HeadingPlugin,
-    HorizontalLine,
-    HtmlComment,
-    ImageCaptionPlugin,
-    ImagePlugin,
-    ImageResizePlugin,
-    ImageStylePlugin,
-    ImageToolbarPlugin,
-    Indent,
-    IndentBlock,
-    ItalicPlugin,
-    LinkPlugin,
-    ListProperties,
-    Mathematics,
-    Paragraph,
-    RemoveFormat,
-    SourceEditing,
-    SpecialCharacters,
-    SpecialCharactersCurrency,
-    SpecialCharactersSmiley,
-    SpecialCharactersEssentials,
-    SpecialCharactersGreek,
-    SpecialCharactersLatin,
-    SpecialCharactersMathematical,
-    SpecialCharactersText,
-    Strikethrough,
-    StudipBlockQuote,
-    StudipUpload,
-    Subscript,
-    Superscript,
-    Table,
-    TableCaption,
-    TableCellProperties,
-    TableProperties,
-    TableToolbar,
-    TextTransformation,
-    Underline,
-    FileRepository,
-    StudipA11YDialog,
-];
+import BalloonEditor, { createBalloonEditorFromTextarea } from '../cke/balloon-editor.js';
+import ClassicEditor, { createClassicEditorFromTextarea } from '../cke/classic-editor.js';
+import { updateVoiceLabel } from '../cke/studip-a11y-dialog/a11y-dialog.js';
 
-const customColorPalette = [
-    { color: '#000000' },
-    { color: '#6c737a' }, //75%
-    { color: '#a7abaf' }, //45%
-    { color: '#c4c7c9' }, //30%
-    { color: '#ffffff', hasBorder: true },
-
-    { color: '#cb1800' }, //red
-    { color: '#f26e00' }, //pumpkin
-    { color: '#ffbd33' }, //yellow
-    { color: '#8bbd40' }, // apple green
-    { color: '#00962d' }, //green
-
-    { color: '#41afaa' }, //verdigris
-    { color: '#a9b6cb' }, // blue 40%
-    { color: '#28497c' }, // blue
-    { color: '#bf5796' }, // mulberry
-    { color: '#8656a2' }, // royal purple
-];
+import '../../stylesheets/scss/studip-cke-ui.scss';
 
-ClassicEditor.defaultConfig = {
-    toolbar: {
-        items: [
-            'undo',
-            'redo',
-            'findAndReplace',
-            '|',
-            'bold',
-            'italic',
-            'underline',
-            'strikethrough',
-            'subscript',
-            'superscript',
-            '|',
-            'removeFormat',
-            '|',
-            'bulletedList',
-            'numberedList',
-            '|',
-            'outdent',
-            'indent',
-            '|',
-            'alignment:left',
-            'alignment:right',
-            'alignment:center',
-            'alignment:justify',
-            '-',
-            'heading',
-            'fontColor',
-            'fontBackgroundColor',
-            '|',
-            'link',
-            'insertTable',
-            'uploadImage',
-            'codeBlock',
-            'math',
-            'studip-wiki',
-            'specialCharacters',
-            'horizontalLine',
-            '|',
-            'insertBlockQuote',
-            'splitBlockQuote',
-            'removeBlockQuote',
-            '|',
-            'sourceEditing',
-        ],
-        shouldNotGroupWhenFull: true,
-    },
-    fontColor: {
-        colors: customColorPalette,
-    },
-    fontBackgroundColor: {
-        colors: customColorPalette,
-    },
-    image: {
-        resizeOptions: [
-            {
-                name: 'resizeImage:original',
-                value: null,
-                icon: 'original'
-            },
-            {
-                name: 'resizeImage:25',
-                value: '25',
-                icon: 'small'
-            },
-            {
-                name: 'resizeImage:50',
-                value: '50',
-                icon: 'medium'
-            },
-            {
-                name: 'resizeImage:75',
-                value: '75',
-                icon: 'large'
-            }
-        ],
-        toolbar: [
-            'resizeImage:25',
-            'resizeImage:50',
-            'resizeImage:75',
-            'resizeImage:original',
-            '|',
-            'imageStyle:inline',
-            'imageStyle:block',
-            'imageStyle:side',
-            '|',
-            'toggleImageCaption',
-            'imageTextAlternative',
-        ],
-    },
-    heading: {
-        options: [
-            { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },
-            { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },
-            { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },
-            { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },
-            { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },
-            { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },
-            { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' },
-        ],
-    },
-    table: {
-        contentToolbar: [
-            'toggleTableCaption',
-            'tableColumn',
-            'tableRow',
-            'mergeTableCells',
-            'tableCellProperties',
-            'tableProperties',
-        ],
-        tableProperties: {
-            borderColors: customColorPalette,
-            backgroundColors: customColorPalette,
-            defaultProperties: {
-                alignment: 'left',
-                borderStyle: 'solid',
-                borderColor: '#666666',
-                borderWidth: '1px',
-            },
-        },
-        tableCellProperties: {
-            borderColors: customColorPalette,
-            backgroundColors: customColorPalette,
-            defaultProperties: {
-                borderStyle: 'solid',
-                borderColor: '#666666',
-                borderWidth: '1px',
-            },
-        },
-    },
-    typing: {
-        transformations: {
-            remove: ['quotes'],
-        },
-    },
-    list: {
-        properties: {
-            styles: true,
-            startIndex: true,
-            reversed: true,
-        },
-    },
-    math: {
-        engine: 'mathjax',
-        outputType: 'span',
-    },
-    link: {
-        defaultProtocol: 'https://',
-    },
-    language: 'de',
-    htmlSupport: {
-        allow: [
-            /* HTML features to allow */
-            {
-                name: 'div',
-                classes: 'author',
-            },
-            {
-                name: 'pre',
-                classes: 'usercode'
-            }
-        ],
-        disallow: [
-            /* HTML features to disallow */
-        ],
-    },
+export {
+    BalloonEditor,
+    ClassicEditor,
+    createBalloonEditorFromTextarea,
+    createClassicEditorFromTextarea,
 };
 
 updateVoiceLabel();
diff --git a/resources/assets/javascripts/cke/balloon-editor.js b/resources/assets/javascripts/cke/balloon-editor.js
new file mode 100644
index 0000000000000000000000000000000000000000..4eba8868cefc4725078d5d8b6ab98a5e832b7076
--- /dev/null
+++ b/resources/assets/javascripts/cke/balloon-editor.js
@@ -0,0 +1,53 @@
+import BalloonEditorBase from '@ckeditor/ckeditor5-editor-balloon/src/ballooneditor';
+import { builtinPlugins } from './builtin-plugins.js';
+import { defaultConfig } from './default-config.js';
+
+export default class BalloonEditor extends BalloonEditorBase {}
+export { createBalloonEditorFromTextarea };
+
+BalloonEditor.builtinPlugins = builtinPlugins;
+BalloonEditor.defaultConfig = {
+    ...defaultConfig,
+    balloonToolbar: {
+        items: [
+            'bold',
+            'italic',
+            'underline',
+            'subscript',
+            'superscript',
+            '|',
+            'removeFormat',
+            '|',
+            'fontColor',
+            'fontBackgroundColor',
+            '|',
+            'link',
+            'math',
+            'specialCharacters',
+        ],
+        shouldNotGroupWhenFull: true,
+    },
+    blockToolbar: [
+        'paragraph',
+        'heading1',
+        'heading2',
+        '|',
+        'bulletedList',
+        'numberedList',
+        '|',
+        'alignment:left',
+        'alignment:right',
+        'alignment:center',
+        'alignment:justify',
+    ],
+};
+
+function createBalloonEditorFromTextarea(textarea, options) {
+    const replacement = document.createElement('div');
+    replacement.classList.add('wysiwyg-balloon');
+    replacement.innerHTML = textarea.value;
+    textarea.parentNode.insertBefore(replacement, textarea.nextSibling);
+    textarea.style.display = 'none';
+
+    return BalloonEditor.create(replacement);
+}
diff --git a/resources/assets/javascripts/cke/builtin-plugins.js b/resources/assets/javascripts/cke/builtin-plugins.js
new file mode 100644
index 0000000000000000000000000000000000000000..3b285df7deb6543447fd0ca2a742f57bdc240bd7
--- /dev/null
+++ b/resources/assets/javascripts/cke/builtin-plugins.js
@@ -0,0 +1,114 @@
+/* ckeditor official */
+import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment';
+import Autoformat from '@ckeditor/ckeditor5-autoformat/src/autoformat';
+import BlockQuote from '@ckeditor/ckeditor5-block-quote/src/blockquote';
+import BoldPlugin from '@ckeditor/ckeditor5-basic-styles/src/bold';
+import CodeBlock from '@ckeditor/ckeditor5-code-block/src/codeblock';
+import EasyImagePlugin from '@ckeditor/ckeditor5-easy-image/src/easyimage';
+import EssentialsPlugin from '@ckeditor/ckeditor5-essentials/src/essentials';
+import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';
+import FindAndReplace from '@ckeditor/ckeditor5-find-and-replace/src/findandreplace';
+import FontBackgroundColor from '@ckeditor/ckeditor5-font/src/fontbackgroundcolor.js';
+import FontColor from '@ckeditor/ckeditor5-font/src/fontcolor.js';
+import GeneralHtmlSupport from '@ckeditor/ckeditor5-html-support/src/generalhtmlsupport';
+import HeadingPlugin from '@ckeditor/ckeditor5-heading/src/heading';
+import HorizontalLine from '@ckeditor/ckeditor5-horizontal-line/src/horizontalline';
+import HtmlComment from '@ckeditor/ckeditor5-html-support/src/htmlcomment';
+import ImagePlugin from '@ckeditor/ckeditor5-image/src/image';
+import ImageUploadPlugin from '@ckeditor/ckeditor5-image/src/imageupload';
+import ImageCaptionPlugin from '@ckeditor/ckeditor5-image/src/imagecaption';
+import ImageResizePlugin from '@ckeditor/ckeditor5-image/src/imageresize';
+import ImageStylePlugin from '@ckeditor/ckeditor5-image/src/imagestyle';
+import ImageToolbarPlugin from '@ckeditor/ckeditor5-image/src/imagetoolbar';
+import Indent from '@ckeditor/ckeditor5-indent/src/indent';
+import IndentBlock from '@ckeditor/ckeditor5-indent/src/indentblock';
+import ItalicPlugin from '@ckeditor/ckeditor5-basic-styles/src/italic';
+import LinkPlugin from '@ckeditor/ckeditor5-link/src/link';
+import List from '@ckeditor/ckeditor5-list/src/list';
+import ListProperties from '@ckeditor/ckeditor5-list/src/listproperties';
+import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
+import RemoveFormat from '@ckeditor/ckeditor5-remove-format/src/removeformat.js';
+import SourceEditing from '@ckeditor/ckeditor5-source-editing/src/sourceediting';
+import SpecialCharacters from '@ckeditor/ckeditor5-special-characters/src/specialcharacters.js';
+import SpecialCharactersCurrency from '@ckeditor/ckeditor5-special-characters/src/specialcharacterscurrency.js';
+import SpecialCharactersEssentials from '@ckeditor/ckeditor5-special-characters/src/specialcharactersessentials.js';
+import SpecialCharactersLatin from '@ckeditor/ckeditor5-special-characters/src/specialcharacterslatin.js';
+import SpecialCharactersMathematical from '@ckeditor/ckeditor5-special-characters/src/specialcharactersmathematical.js';
+import SpecialCharactersText from '@ckeditor/ckeditor5-special-characters/src/specialcharacterstext.js';
+import Strikethrough from '@ckeditor/ckeditor5-basic-styles/src/strikethrough.js';
+import Subscript from '@ckeditor/ckeditor5-basic-styles/src/subscript.js';
+import Superscript from '@ckeditor/ckeditor5-basic-styles/src/superscript.js';
+import Table from '@ckeditor/ckeditor5-table/src/table.js';
+import TableCaption from '@ckeditor/ckeditor5-table/src/tablecaption.js';
+import TableCellProperties from '@ckeditor/ckeditor5-table/src/tablecellproperties';
+import TableProperties from '@ckeditor/ckeditor5-table/src/tableproperties';
+import TableToolbar from '@ckeditor/ckeditor5-table/src/tabletoolbar.js';
+import TextTransformation from '@ckeditor/ckeditor5-typing/src/texttransformation';
+import Underline from '@ckeditor/ckeditor5-basic-styles/src/underline.js';
+/* ckeditor third party */
+import Mathematics from 'ckeditor5-math/src/math';
+/* ckeditor elan */
+import StudipA11YDialog, { updateVoiceLabel } from '../cke/studip-a11y-dialog/a11y-dialog.js';
+import StudipBlockQuote from '../cke/studip-quote/StudipBlockQuote.js';
+import StudipUpload from '../cke/StudipUpload.js';
+import StudipWikiLink from '../cke/wiki-link/wiki-link.js';
+import SpecialCharactersSmiley from '../cke/special_characters/SpecialCharactersSmiley.js';
+import SpecialCharactersGreek from '../cke/special_characters/SpecialCharactersGreek.js';
+
+import { BlockToolbar } from '@ckeditor/ckeditor5-ui';
+
+const builtinPlugins = [
+    ImageUploadPlugin,
+    Alignment,
+    Autoformat,
+    BlockQuote,
+    BoldPlugin,
+    CodeBlock,
+    EssentialsPlugin,
+    FindAndReplace,
+    FontColor,
+    FontBackgroundColor,
+    GeneralHtmlSupport,
+    HeadingPlugin,
+    HorizontalLine,
+    HtmlComment,
+    ImageCaptionPlugin,
+    ImagePlugin,
+    ImageResizePlugin,
+    ImageStylePlugin,
+    ImageToolbarPlugin,
+    Indent,
+    IndentBlock,
+    ItalicPlugin,
+    LinkPlugin,
+    ListProperties,
+    Mathematics,
+    Paragraph,
+    RemoveFormat,
+    SourceEditing,
+    SpecialCharacters,
+    SpecialCharactersCurrency,
+    SpecialCharactersSmiley,
+    SpecialCharactersEssentials,
+    SpecialCharactersGreek,
+    SpecialCharactersLatin,
+    SpecialCharactersMathematical,
+    SpecialCharactersText,
+    Strikethrough,
+    StudipBlockQuote,
+    StudipUpload,
+    Subscript,
+    Superscript,
+    Table,
+    TableCaption,
+    TableCellProperties,
+    TableProperties,
+    TableToolbar,
+    TextTransformation,
+    Underline,
+    FileRepository,
+    StudipA11YDialog,
+    BlockToolbar,
+];
+
+export { builtinPlugins };
diff --git a/resources/assets/javascripts/cke/classic-editor.js b/resources/assets/javascripts/cke/classic-editor.js
new file mode 100644
index 0000000000000000000000000000000000000000..53154c321dbfdf6e86986e3907de73d335641d27
--- /dev/null
+++ b/resources/assets/javascripts/cke/classic-editor.js
@@ -0,0 +1,108 @@
+import ClassicEditorBase from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
+import { builtinPlugins } from './builtin-plugins.js';
+import { defaultConfig } from './default-config.js';
+import eventBus from '../lib/event-bus.ts';
+
+export default class ClassicEditor extends ClassicEditorBase {}
+export { createClassicEditorFromTextarea };
+
+ClassicEditor.builtinPlugins = builtinPlugins;
+ClassicEditor.defaultConfig = {
+    ...defaultConfig,
+    toolbar: {
+        items: [
+            'undo',
+            'redo',
+            'findAndReplace',
+            '|',
+            'bold',
+            'italic',
+            'underline',
+            'strikethrough',
+            'subscript',
+            'superscript',
+            '|',
+            'removeFormat',
+            '|',
+            'bulletedList',
+            'numberedList',
+            '|',
+            'outdent',
+            'indent',
+            '|',
+            'alignment:left',
+            'alignment:right',
+            'alignment:center',
+            'alignment:justify',
+            '-',
+            'heading',
+            'fontColor',
+            'fontBackgroundColor',
+            '|',
+            'link',
+            'insertTable',
+            'uploadImage',
+            'codeBlock',
+            'math',
+            'studip-wiki',
+            'specialCharacters',
+            'horizontalLine',
+            '|',
+            'insertBlockQuote',
+            'splitBlockQuote',
+            'removeBlockQuote',
+            '|',
+            'sourceEditing',
+        ],
+        shouldNotGroupWhenFull: true,
+    },
+};
+
+function createClassicEditorFromTextarea(textarea, options) {
+    return ClassicEditor.create(textarea, options)
+        .then((editor) => {
+            const updateOffsetTop = createUpdater(editor);
+
+            updateOffsetTop();
+
+            eventBus.on('toggle-compact-navigation', updateOffsetTop);
+            eventBus.on('switch-focus-mode', updateOffsetTop);
+
+            editor.on('destroy', () => {
+                eventBus.off('toggle-compact-navigation', updateOffsetTop);
+                eventBus.off('switch-focus-mode', updateOffsetTop);
+            });
+
+            return editor;
+        })
+        .then((editor) => {
+            const button = editor.ui.view.toolbar?.items.find((item) => item.class === 'ck-source-editing-button');
+            if (button) {
+                button.withText = false;
+            }
+
+            return editor;
+        });
+}
+
+function createUpdater(editor) {
+    // This needs to be delayed since some events will fire before
+    // changing the DOM
+    return () =>
+        setTimeout(() => {
+            editor.ui.viewportOffset = { top: getViewportOffsetTop() };
+            editor.ui.update();
+        }, 50);
+}
+
+function getViewportOffsetTop() {
+    const topBar = document.getElementById('top-bar');
+    const responsiveContentbar = document.getElementById('responsive-contentbar');
+
+    let top = topBar.clientHeight + topBar.clientTop;
+    if (responsiveContentbar) {
+        top += responsiveContentbar?.clientHeight + responsiveContentbar.clientTop;
+    }
+
+    return top;
+}
diff --git a/resources/assets/javascripts/cke/default-config.js b/resources/assets/javascripts/cke/default-config.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c71e68d557cd744bdba644f93555ad24e6a37d0
--- /dev/null
+++ b/resources/assets/javascripts/cke/default-config.js
@@ -0,0 +1,144 @@
+const customColorPalette = [
+    { color: '#000000' },
+    { color: '#6c737a' }, //75%
+    { color: '#a7abaf' }, //45%
+    { color: '#c4c7c9' }, //30%
+    { color: '#ffffff', hasBorder: true },
+
+    { color: '#cb1800' }, //red
+    { color: '#f26e00' }, //pumpkin
+    { color: '#ffbd33' }, //yellow
+    { color: '#8bbd40' }, // apple green
+    { color: '#00962d' }, //green
+
+    { color: '#41afaa' }, //verdigris
+    { color: '#a9b6cb' }, // blue 40%
+    { color: '#28497c' }, // blue
+    { color: '#bf5796' }, // mulberry
+    { color: '#8656a2' }, // royal purple
+];
+
+const defaultConfig = {
+    fontColor: {
+        colors: customColorPalette,
+    },
+    fontBackgroundColor: {
+        colors: customColorPalette,
+    },
+    image: {
+        resizeOptions: [
+            {
+                name: 'resizeImage:original',
+                value: null,
+                icon: 'original'
+            },
+            {
+                name: 'resizeImage:25',
+                value: '25',
+                icon: 'small'
+            },
+            {
+                name: 'resizeImage:50',
+                value: '50',
+                icon: 'medium'
+            },
+            {
+                name: 'resizeImage:75',
+                value: '75',
+                icon: 'large'
+            }
+        ],
+        toolbar: [
+            'resizeImage:25',
+            'resizeImage:50',
+            'resizeImage:75',
+            'resizeImage:original',
+            '|',
+            'imageStyle:inline',
+            'imageStyle:block',
+            'imageStyle:side',
+            '|',
+            'toggleImageCaption',
+            'imageTextAlternative',
+        ],
+    },
+    heading: {
+        options: [
+            { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },
+            { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },
+            { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },
+            { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },
+            { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },
+            { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },
+            { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' },
+        ],
+    },
+    table: {
+        contentToolbar: [
+            'toggleTableCaption',
+            'tableColumn',
+            'tableRow',
+            'mergeTableCells',
+            'tableCellProperties',
+            'tableProperties',
+        ],
+        tableProperties: {
+            borderColors: customColorPalette,
+            backgroundColors: customColorPalette,
+            defaultProperties: {
+                alignment: 'left',
+                borderStyle: 'solid',
+                borderColor: '#666666',
+                borderWidth: '1px',
+            },
+        },
+        tableCellProperties: {
+            borderColors: customColorPalette,
+            backgroundColors: customColorPalette,
+            defaultProperties: {
+                borderStyle: 'solid',
+                borderColor: '#666666',
+                borderWidth: '1px',
+            },
+        },
+    },
+    typing: {
+        transformations: {
+            remove: ['quotes'],
+        },
+    },
+    list: {
+        properties: {
+            styles: true,
+            startIndex: true,
+            reversed: true,
+        },
+    },
+    math: {
+        engine: 'mathjax',
+        outputType: 'span',
+    },
+    link: {
+        defaultProtocol: 'https://',
+    },
+    // This value must be kept in sync with the language defined in webpack.config.js.
+    language: 'de',
+    htmlSupport: {
+        allow: [
+            /* HTML features to allow */
+            {
+                name: 'div',
+                classes: 'author',
+            },
+            {
+                name: 'pre',
+                classes: 'usercode',
+            },
+        ],
+        disallow: [
+            /* HTML features to disallow */
+        ],
+    },
+};
+
+export { defaultConfig };
diff --git a/resources/assets/javascripts/cke/studip-a11y-dialog/a11y-dialog.js b/resources/assets/javascripts/cke/studip-a11y-dialog/a11y-dialog.js
index 1cef6184743b67200ea1c158e5e4dee1483911a7..814e931e67195daa068b514f1a3959a58d85c11c 100644
--- a/resources/assets/javascripts/cke/studip-a11y-dialog/a11y-dialog.js
+++ b/resources/assets/javascripts/cke/studip-a11y-dialog/a11y-dialog.js
@@ -1,4 +1,4 @@
-import { Plugin } from 'ckeditor5/src/core';
+import { Plugin } from '@ckeditor/ckeditor5-core';
 import { add } from '@ckeditor/ckeditor5-utils/src/translation-service';
 import { $gettext } from '../../lib/gettext.js';
 import A11YDialogEditing from './editing.js';
diff --git a/resources/assets/javascripts/cke/studip-a11y-dialog/command.js b/resources/assets/javascripts/cke/studip-a11y-dialog/command.js
index 71c6fe009d1a430003fdc07038d500abcf35b20b..62c8efde5f8cf72452cba93a4cc0c29cac92005c 100644
--- a/resources/assets/javascripts/cke/studip-a11y-dialog/command.js
+++ b/resources/assets/javascripts/cke/studip-a11y-dialog/command.js
@@ -1,4 +1,4 @@
-import { Command } from 'ckeditor5/src/core';
+import { Command } from '@ckeditor/ckeditor5-core';
 import Dialog from '../../lib/dialog.js';
 
 export default class A11YDialogCommand extends Command {
diff --git a/resources/assets/javascripts/cke/studip-a11y-dialog/editing.js b/resources/assets/javascripts/cke/studip-a11y-dialog/editing.js
index 95c15594a1567610449309b24f2ef9996cbb0b29..4369bb50622beb1fb0a9f0fafb4bccda8d2edbcd 100644
--- a/resources/assets/javascripts/cke/studip-a11y-dialog/editing.js
+++ b/resources/assets/javascripts/cke/studip-a11y-dialog/editing.js
@@ -1,4 +1,4 @@
-import { Plugin } from 'ckeditor5/src/core';
+import { Plugin } from '@ckeditor/ckeditor5-core';
 import A11YDialogCommand from './command.js';
 
 export default class A11YDialogEditing extends Plugin {
diff --git a/resources/assets/javascripts/cke/studip-a11y-dialog/ui.js b/resources/assets/javascripts/cke/studip-a11y-dialog/ui.js
index 9d2980bf24dc932e6f8af7015e9f119ab2523bed..a2d207fc5f1f29924b59a727c3ce3bc2e910d658 100644
--- a/resources/assets/javascripts/cke/studip-a11y-dialog/ui.js
+++ b/resources/assets/javascripts/cke/studip-a11y-dialog/ui.js
@@ -1,5 +1,5 @@
 import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';
-import { Plugin } from 'ckeditor5/src/core';
+import { Plugin } from '@ckeditor/ckeditor5-core';
 import { $gettext } from '../../lib/gettext.js';
 
 const a11yIcon =
diff --git a/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js b/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js
index 8b0b739ea80f30592e30de217f0f50f9881dd5e8..e50f8c64d8dcf1685c00c16ecd6821d0cea08969 100644
--- a/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js
+++ b/resources/assets/javascripts/cke/studip-quote/StudipBlockQuote.js
@@ -1,7 +1,7 @@
 import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
 import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';
 import { $gettext } from '../../lib/gettext.js';
-import { Command, icons } from 'ckeditor5/src/core';
+import { Command, icons } from '@ckeditor/ckeditor5-core';
 
 const divideIcon =
     '<svg version="1.1" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.3 2h2v16h-2zm-7.2987 8.423a6.5 6.5 0 0 1 6.056-6.408l0.038 0.67c-2.646 0.738-3.74 2.978-3.874 5.315h3.78c0.552 0 0.5 0.432 0.5 0.986v4.511c0 0.554-0.448 0.503-1 0.503h-5c-0.552 0-0.5-0.449-0.5-1.003zm10 0a6.5 6.5 0 0 1 6.056-6.408l0.038 0.67c-2.646 0.739-3.74 2.979-3.873 5.315h3.779c0.552 0 0.5 0.432 0.5 0.986v4.511c0 0.554-0.448 0.503-1 0.503h-5c-0.552 0-0.5-0.449-0.5-1.003z" stroke-width="1.1664"/></svg>';
diff --git a/resources/assets/javascripts/cke/wiki-link/editing.js b/resources/assets/javascripts/cke/wiki-link/editing.js
index 5322694eb8c6a19cfcf316723e9143cc3f62705e..a42461f01ea94d3c4fcf89ed5a512fc3cf8e8316 100644
--- a/resources/assets/javascripts/cke/wiki-link/editing.js
+++ b/resources/assets/javascripts/cke/wiki-link/editing.js
@@ -1,4 +1,4 @@
-import { Plugin } from 'ckeditor5/src/core';
+import { Plugin } from '@ckeditor/ckeditor5-core';
 import InsertCommand from './insertcommand';
 
 export default class WikiLinkEditing extends Plugin {
diff --git a/resources/assets/javascripts/cke/wiki-link/formview.js b/resources/assets/javascripts/cke/wiki-link/formview.js
index 68f4e0a827f3599d96dcff7f6418543a4b0dc6b0..8d82e25eb204994d36c4a4feb19bd47ae0092aae 100644
--- a/resources/assets/javascripts/cke/wiki-link/formview.js
+++ b/resources/assets/javascripts/cke/wiki-link/formview.js
@@ -10,8 +10,8 @@ import {
     injectCssTransitionDisabler,
     createDropdown,
     addListToDropdown,
-} from 'ckeditor5/src/ui';
-import { FocusTracker, KeystrokeHandler, Collection, Rect, isVisible } from 'ckeditor5/src/utils';
+} from '@ckeditor/ckeditor5-ui';
+import { FocusTracker, KeystrokeHandler, Collection, Rect, isVisible } from '@ckeditor/ckeditor5-utils';
 import { $gettext } from '../../lib/gettext.js';
 
 export default class WikiLinkFormView extends View {
diff --git a/resources/assets/javascripts/cke/wiki-link/insertcommand.js b/resources/assets/javascripts/cke/wiki-link/insertcommand.js
index 1bf36b89350656fc91ddec59b5613e08ae5c945e..2b57cac0e2223c722cfb9d72428e0f5e616be35d 100644
--- a/resources/assets/javascripts/cke/wiki-link/insertcommand.js
+++ b/resources/assets/javascripts/cke/wiki-link/insertcommand.js
@@ -1,4 +1,4 @@
-import { Command } from 'ckeditor5/src/core';
+import { Command } from '@ckeditor/ckeditor5-core';
 
 export default class InsertCommand extends Command {
     refresh() {
diff --git a/resources/assets/javascripts/cke/wiki-link/ui.js b/resources/assets/javascripts/cke/wiki-link/ui.js
index 1765a933008d7bb7ec9c1a82a03366703df85de2..a8e5f89c019046aac6b025d14ee4b963e0cae4f7 100644
--- a/resources/assets/javascripts/cke/wiki-link/ui.js
+++ b/resources/assets/javascripts/cke/wiki-link/ui.js
@@ -1,5 +1,5 @@
-import { Plugin } from 'ckeditor5/src/core';
-import { createDropdown } from 'ckeditor5/src/ui';
+import { Plugin } from '@ckeditor/ckeditor5-core';
+import { createDropdown } from '@ckeditor/ckeditor5-ui';
 import WikiLinkFormView from './formview.js';
 import { $gettext } from '../../lib/gettext.js';
 
diff --git a/resources/assets/javascripts/cke/wiki-link/wiki-link.js b/resources/assets/javascripts/cke/wiki-link/wiki-link.js
index 48099777ae91ba25e529ab2646be07cc8a33d0e9..1abf5bfe877575339c6f34890d4ba0a6c113e64f 100644
--- a/resources/assets/javascripts/cke/wiki-link/wiki-link.js
+++ b/resources/assets/javascripts/cke/wiki-link/wiki-link.js
@@ -1,4 +1,4 @@
-import { Plugin } from 'ckeditor5/src/core';
+import { Plugin } from '@ckeditor/ckeditor5-core';
 import WikiLinkUI from './ui.js';
 import WikiLinkEditing from './editing.js';
 
diff --git a/resources/assets/javascripts/lib/wysiwyg.js b/resources/assets/javascripts/lib/wysiwyg.js
index 95a4f1ac5c791748c9a04cb1934ae4823a9e5206..6b5f502ed7d89358ac22ba3d2611cf56df59916c 100644
--- a/resources/assets/javascripts/lib/wysiwyg.js
+++ b/resources/assets/javascripts/lib/wysiwyg.js
@@ -56,169 +56,22 @@ function isEditorHidden(textarea) {
     return editor && editor.ui && $(editor.ui.element).is(':hidden');
 }
 
-function replaceTextarea(textarea) {
-    setEditor(textarea, {});
-    const $textarea = textarea instanceof jQuery ? textarea : $(textarea);
-
-    let options = {};
-
-    if ($textarea.attr('data-editor')) {
-        const parsed = parseOptions($textarea.attr('data-editor'));
-
-        if (parsed.toolbar === 'small') {
-            options.toolbar = {
-                removeItems: [
-                    'undo',
-                    'redo',
-                    'findAndReplace',
-                    'strikethrough',
-                    'horizontalLine',
-                    'insertBlockQuote',
-                    'splitBlockQuote',
-                    'removeBlockQuote',
-                ]
-            };
-        } else if (parsed.toolbar === 'minimal') {
-            options.toolbar = {
-                items: [
-                    'bold',
-                    'italic',
-                    'underline',
-                    'subscript',
-                    'superscript',
-                    '|',
-                    'removeFormat',
-                    '|',
-                    'bulletedList',
-                    'numberedList',
-                    '|',
-                    'fontColor',
-                    'fontBackgroundColor',
-                    '|',
-                    'link',
-                    'math',
-                    'specialCharacters',
-                ]
-            };
-        }
-
-        if (parsed.removePlugins) {
-            options.removePlugins = parsed.removePlugins.split(",")
-        }
-
-        if (parsed.extraPlugins) {
-            const pluginMap = { WikiLink };
-            options.extraPlugins = parsed.extraPlugins.split(",").reduce((memo, plugin) => {
-                if (plugin in pluginMap) {
-                    memo.push(pluginMap[plugin]);
-                }
-                return memo;
-            }, []);
-        }
-    }
-
-    return STUDIP.loadChunk('wysiwyg')
-        .then(loadMathJax)
-        .then(createEditor)
-        .then(setEditorInstance)
-        .then(enhanceEditor)
-        .then(emitLoadEvent);
-
-    function createEditor(ClassicEditor) {
-        return ClassicEditor.create(textarea, options).then(editor => {
-            function getViewportOffsetTop() {
-                const topBar = document.getElementById('top-bar');
-                const responsiveContentbar = document.getElementById('responsive-contentbar');
-
-                let top = topBar.clientHeight + topBar.clientTop;
-                if (responsiveContentbar) {
-                    top += responsiveContentbar?.clientHeight + responsiveContentbar.clientTop;
-                }
-
-                return top;
-            }
-
-            function updateOffsetTop() {
-                // This needs to be delayed since some events will fire before
-                // changing the DOM
-                setTimeout(() => {
-                    editor.ui.viewportOffset = {top: getViewportOffsetTop()};
-                    editor.ui.update();
-                }, 50);
-            }
-
-            // Set initial offset top
-            updateOffsetTop();
-
-            // Listen to relevant events that may require the sticky panel to be misplaced
-            STUDIP.eventBus.on('toggle-compact-navigation', updateOffsetTop);
-            STUDIP.eventBus.on('switch-focus-mode', updateOffsetTop);
+async function replaceTextarea(textarea) {
+    await loadMathJax();
 
-            // Stop listening if editor is destroyed
-            editor.on('destroy', () => {
-                STUDIP.eventBus.off('toggle-compact-navigation', updateOffsetTop);
-                STUDIP.eventBus.off('switch-focus-mode', updateOffsetTop);
-            });
-
-            return editor;
-        });
-    }
-
-    function setEditorInstance(ckeditor) {
-        setEditor(textarea, ckeditor);
-        return ckeditor;
-    }
-
-    function enhanceEditor(ckeditor) {
-        // make sure HTML marker is always set, in
-        // case contents are cut-off by the backend
-        $textarea.closest('form').submit(() => {
-            ckeditor.setData(wysiwyg.markAsHtml(ckeditor.getData()));
-            ckeditor.updateSourceElement();
-        });
-
-        // focus the editor if requested
-        if ($textarea.is('[autofocus]')) {
-            ckeditor.focus();
-        }
-
-        ckeditor.ui.focusTracker.on('change:isFocused', (evt, name, isFocused) => {
-            if (!isFocused) {
-                ckeditor.updateSourceElement(wysiwyg.markAsHtml(ckeditor.getData()));
-            }
-        });
-
-        const button = ckeditor.ui.view.toolbar.items.find( item => item.class === "ck-source-editing-button");
-        if (button) {
-            button.withText = false;
-        }
-
-        // Tell MathJax v2.7 to leave the editor alone
-        ckeditor.ui.element.classList.add('tex2jax_ignore');
-
-        return ckeditor;
-    }
-
-    function emitLoadEvent(ckeditor) {
-        $textarea.trigger('load.wysiwyg');
-
-        return ckeditor;
-    }
+    setEditor(textarea, {});
 
-    async function loadMathJax(ckeditor) {
-        let mathjaxP;
+    const chunk = await STUDIP.loadChunk('wysiwyg');
 
-        if (window.MathJax && window.MathJax.Hub) {
-            mathjaxP = Promise.resolve(window.MathJax);
-        } else if (window.STUDIP && window.STUDIP.loadChunk) {
-            mathjaxP = window.STUDIP.loadChunk('mathjax');
-        }
+    const $textarea = textarea instanceof jQuery ? textarea : $(textarea);
+    const { options, editorType } = parseEditorOptions($textarea.attr('data-editor'));
+    const editor = await createEditor(chunk, textarea, editorType, options);
+    enhanceEditor($textarea, editor);
 
-        await mathjaxP;
+    setEditor(textarea, editor);
+    $textarea.trigger('load.wysiwyg');
 
-        //console.log('loading MathJaxP...', mathjaxP);
-        return ckeditor;
-    }
+    return editor;
 }
 
 function destroyTextarea(textarea) {
@@ -260,3 +113,127 @@ function setEditor(textarea, editor) {
 function unsetEditor(textarea) {
     instances.delete(textarea.id);
 }
+
+////////////////////////////////////////////////////////////////////////////////
+function parseEditorOptions(data) {
+    const result = { options: {}, editorType: 'classic' };
+
+    if (data) {
+        const parsed = parseOptions(data);
+
+        const toolbar = getToolbarOptions(parsed);
+        if (toolbar) {
+            result.options.toolbar = toolbar;
+        }
+
+        if (parsed.removePlugins) {
+            result.options.removePlugins = parsed.removePlugins.split(',');
+        }
+
+        if (parsed.extraPlugins) {
+            const pluginMap = { WikiLink };
+            result.options.extraPlugins = parsed.extraPlugins.split(',').reduce((memo, plugin) => {
+                return plugin in pluginMap ? [...memo, pluginMap[plugin]] : memo;
+            }, []);
+        }
+
+        if (parsed.type) {
+            if (['balloon', 'classic'].includes(parsed.type)) {
+                result.editorType = parsed.type;
+            }
+        }
+    }
+
+    return result;
+}
+
+function getToolbarOptions(parsed) {
+    if (parsed.toolbar === 'small') {
+        return {
+            removeItems: [
+                'undo',
+                'redo',
+                'findAndReplace',
+                'strikethrough',
+                'horizontalLine',
+                'insertBlockQuote',
+                'splitBlockQuote',
+                'removeBlockQuote',
+            ],
+        };
+    } else if (parsed.toolbar === 'minimal') {
+        return {
+            items: [
+                'bold',
+                'italic',
+                'underline',
+                'subscript',
+                'superscript',
+                '|',
+                'removeFormat',
+                '|',
+                'bulletedList',
+                'numberedList',
+                '|',
+                'fontColor',
+                'fontBackgroundColor',
+                '|',
+                'link',
+                'math',
+                'specialCharacters',
+            ],
+        };
+    }
+
+    return null;
+}
+
+function loadMathJax() {
+    if (window.MathJax && window.MathJax.Hub) {
+        return Promise.resolve(window.MathJax);
+    } else if (window.STUDIP && window.STUDIP.loadChunk) {
+        return window.STUDIP.loadChunk('mathjax');
+    }
+
+    return Promise.reject(new Error('Could not load MathJax'));
+}
+
+function createEditor(chunk, textarea, editorType, options) {
+    switch (editorType) {
+        case 'classic':
+            return chunk.createClassicEditorFromTextarea(textarea, options);
+        case 'balloon':
+            return chunk.createBalloonEditorFromTextarea(textarea, options);
+    }
+
+    throw new Error('No such type of WYSIWYG editor.');
+}
+
+function enhanceEditor($textarea, ckeditor) {
+    // make sure HTML marker is always set, in
+    // case contents are cut-off by the backend
+    $textarea.closest('form').submit(() => {
+        const data = wysiwyg.markAsHtml(ckeditor.getData());
+        ckeditor.setData(data);
+        ckeditor.updateSourceElement();
+        $textarea.get(0).value = data;
+    });
+
+    // focus the editor if requested
+    if ($textarea.is('[autofocus]')) {
+        ckeditor.focus();
+    }
+
+    ckeditor.ui.focusTracker.on('change:isFocused', (evt, name, isFocused) => {
+        if (!isFocused) {
+            const data = wysiwyg.markAsHtml(ckeditor.getData());
+            ckeditor.updateSourceElement(data);
+            $textarea.get(0).value = data;
+        }
+    });
+
+    // Tell MathJax v2.7 to leave the editor alone
+    ckeditor.ui.element.classList.add('tex2jax_ignore');
+
+    return ckeditor;
+}
diff --git a/resources/assets/stylesheets/scss/studip-cke-ui.scss b/resources/assets/stylesheets/scss/studip-cke-ui.scss
index d2b52b149e696ab60042015179718bde62dc7b71..5e28678235e48080753e67682f5e3ede18c3bfe3 100644
--- a/resources/assets/stylesheets/scss/studip-cke-ui.scss
+++ b/resources/assets/stylesheets/scss/studip-cke-ui.scss
@@ -60,6 +60,9 @@
 
     /* z-index */
     --ck-z-modal: 1003;
+
+    /* tooltips */
+    --ck-color-tooltip-text: var(--color-text);
 }
 
 .ck.ck-editor {
@@ -78,6 +81,7 @@
 /* buttons */
 .ck.ck-button, a.ck.ck-button {
     font-size: 12px;
+    color: var(--base-color);
 }
 
 .ck.ck-button:hover {
@@ -315,22 +319,28 @@ a.ck.ck-button.ck-button_with-text.ck-dropdown__button:not(.ck-disabled):hover {
 
 /* tooltips */
 
+.ck.ck-balloon-panel.ck-tooltip {
+    background-color: transparent;
+}
 
+.ck.ck-balloon-panel.ck-tooltip .ck.ck-tooltip__text,
 .ck.ck-tooltip .ck-tooltip__text {
+    background-color: var(--dark-gray-color-5);
     border: 1px solid var(--dark-gray-color-30);
     box-shadow: inset 0 1px 0 hsla(0,0%,100%,.5);
     font-size: 14px;
     margin-bottom: 8px;
-    padding: 8px;
+    padding: 12px;
     text-align: left;
     text-shadow: 0 1px 0 hsla(0,0%,100%,.5);
     white-space: normal;
     z-index: 10000;
     word-wrap: break-word;
     color: var(--black);
-    top: 4px;
+    top: 12px;
+    position: relative;
 }
-
+.ck.ck-tooltip__text::after,
 .ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text::after {
     content: "";
     height: 0;
@@ -344,6 +354,7 @@ a.ck.ck-button.ck-button_with-text.ck-dropdown__button:not(.ck-disabled):hover {
     margin-right: -8px;
     top: -16px;
 }
+.ck.ck-tooltip__text::before,
 .ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text::before {
     content: "";
     height: 0;
@@ -374,6 +385,15 @@ $editor-min-height: 8em;
     cursor: text;
     min-height: $editor-min-height;
 }
+.ck.ck-editor__editable_inline {
+    border: 1px solid var(--ck-color-base-border);
+}
+.ck.ck-block-toolbar-button {
+    background: var(--ck-color-base-background);
+    border: 1px solid var(--ck-color-base-border);
+    color: var(--base-color);
+    z-index: 10000;
+}
 
 form.default label:not(.undecorated):not(.ck-voice-label) .ck-source-editing-area textarea {
     margin-top: 0;
@@ -391,12 +411,19 @@ form.default .ck-source-editing-area textarea {
 #forum .ck form {
     display: inherit;
 }
-
+.ck.ck-toolbar {
+    background-color: var(--dark-gray-color-5);
+}
 /* toolbar fix for dialogs */
 .ck.ck-toolbar > .ck-toolbar__items {
     max-width: calc(100% - 20px);
 }
 
+/* tooltip fix for balloon panel */
+.ck.ck-balloon-panel.ck-tooltip {
+    padding: 0;
+}
+
 .studip-dialog {
     .ck-editor {
         overflow: hidden;
@@ -406,3 +433,7 @@ form.default .ck-source-editing-area textarea {
         }
     }
 }
+/* balloon editor button*/
+.ck.ck-block-toolbar-button {
+    background-color: var(--dark-gray-color-5);
+}
diff --git a/resources/vue/components/StudipWysiwyg.vue b/resources/vue/components/StudipWysiwyg.vue
index 086cbe849d5837b1eea1c4f0cfb30441c108bb9c..66f49a1c2fa332b0ce5ab6b7a23c10684f4f855d 100644
--- a/resources/vue/components/StudipWysiwyg.vue
+++ b/resources/vue/components/StudipWysiwyg.vue
@@ -6,7 +6,7 @@
         @ready="prefill"
         v-model="currentText"
         @input="onInput"
-    ></ckeditor>
+    />
     <textarea
         v-else
         :value="text"
@@ -17,7 +17,7 @@
 </template>
 
 <script>
-import ClassicEditor from '../../assets/javascripts/chunks/wysiwyg.js';
+import { ClassicEditor, BalloonEditor } from '../../assets/javascripts/chunks/wysiwyg.js';
 import Toolbar from '../../assets/javascripts/lib/toolbar.js';
 
 export default {
@@ -27,16 +27,34 @@ export default {
         event: 'input',
     },
     props: {
-        text: String,
+        text: {
+            type: String,
+            required: true,
+        },
+        editorType: {
+            type: String,
+            validator: function (value) {
+                return ['classic', 'balloon'].includes(value);
+            },
+            default: 'classic',
+        },
     },
     data() {
         return {
             currentText: '',
-            editor: ClassicEditor,
             editorConfig: {},
         };
     },
     computed: {
+        editor() {
+            switch (this.editorType) {
+                case 'classic':
+                    return ClassicEditor;
+                case 'balloon':
+                    return BalloonEditor;
+            }
+            throw new Error('Unknown `editorType`');
+        },
         enabled() {
             return STUDIP.editor_enabled;
         },
diff --git a/resources/vue/components/courseware/CoursewareTextBlock.vue b/resources/vue/components/courseware/CoursewareTextBlock.vue
index 7367cf82c680018515e746ff2d43c0ac9f37b25d..30eff2fe8f7cef78f0a02ed19f0c4c2d320b65cc 100644
--- a/resources/vue/components/courseware/CoursewareTextBlock.vue
+++ b/resources/vue/components/courseware/CoursewareTextBlock.vue
@@ -24,7 +24,7 @@
 <script>
 import CoursewareDefaultBlock from './CoursewareDefaultBlock.vue';
 import { blockMixin } from './block-mixin.js';
-import ClassicEditor from '../../../assets/javascripts/chunks/wysiwyg.js'
+import { ClassicEditor, BalloonEditor } from '@/assets/javascripts/chunks/wysiwyg'
 import { mapActions } from 'vuex';
 
 export default {
diff --git a/webpack.common.js b/webpack.common.js
index d71aff6da8a07de8e4e72f4ef372196ae5b69b67..3dd376d6f9391133a510ff002cb261a3b23ecf2e 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -3,7 +3,7 @@ const path = require("path");
 const MiniCssExtractPlugin = require("mini-css-extract-plugin");
 const VueLoaderPlugin = require('vue-loader/lib/plugin');
 const ESLintPlugin = require('eslint-webpack-plugin');
-const CKEditorWebpackPlugin = require( '@ckeditor/ckeditor5-dev-webpack-plugin' );
+const { CKEditorTranslationsPlugin } = require( '@ckeditor/ckeditor5-dev-translations' );
 
 const { styles } = require('@ckeditor/ckeditor5-dev-utils');
 
@@ -142,7 +142,7 @@ module.exports = {
                 'resources/assets/javascripts/jquery/jstree/jquery.jstree.js',
             ]
         }),
-        new CKEditorWebpackPlugin({
+        new CKEditorTranslationsPlugin({
             language: 'de',
             addMainLanguageTranslationsToAllAssets: true
         }),