diff --git a/.gitignore b/.gitignore
index bfbf828..b5f44f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,8 @@
 /out-tsc
 /coverage
 /.scannerwork
+/lint.styles.report.json
+/lint.ts.report.json
 
 # Only exists if Bazel was run
 /bazel-out
@@ -21,7 +23,6 @@
 speed-measure-plugin*.json
 
 # IDEs and editors
-/.idea
 .project
 .classpath
 .c9/
@@ -29,6 +30,18 @@
 .settings/
 *.sublime-workspace
 
+# IDE - Jetbrains
+# See: https://www.gitignore.io/api/jetbrains to share code style, etc.
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+.idea/modules.xml
+.idea/*.iml
+.idea/modules
+
 # IDE - VSCode
 .vscode/*
 !.vscode/settings.json
@@ -40,7 +53,6 @@
 # misc
 /.sass-cache
 /connect.lock
-/coverage
 /libpeerconnection.log
 npm-debug.log
 yarn-error.log
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..f298c29
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,54 @@
+<component name="ProjectCodeStyleConfiguration">
+  <code_scheme name="Project" version="173">
+    <ScssCodeStyleSettings>
+      <option name="HEX_COLOR_LOWER_CASE" value="true" />
+      <option name="HEX_COLOR_LONG_FORMAT" value="true" />
+    </ScssCodeStyleSettings>
+    <TypeScriptCodeStyleSettings version="1">
+      <option name="FORCE_SEMICOLON_STYLE" value="true" />
+      <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
+      <option name="FORCE_QUOTE_STYlE" value="true" />
+      <option name="SPACE_WITHIN_TYPE_ASSERTION" value="true" />
+      <option name="IMPORT_SORT_MODULE_NAME" value="true" />
+      <option name="BLACKLIST_IMPORTS" value="rxjs/Rx,primeng,primeng/public_api" />
+    </TypeScriptCodeStyleSettings>
+    <codeStyleSettings language="CSS">
+      <indentOptions>
+        <option name="INDENT_SIZE" value="2" />
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="LESS">
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="SASS">
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="SCSS">
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="Stylus">
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="TypeScript">
+      <option name="RIGHT_MARGIN" value="140" />
+      <option name="IF_BRACE_FORCE" value="3" />
+      <option name="DOWHILE_BRACE_FORCE" value="3" />
+      <option name="WHILE_BRACE_FORCE" value="3" />
+      <option name="FOR_BRACE_FORCE" value="3" />
+    </codeStyleSettings>
+  </code_scheme>
+</component>
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+  <state>
+    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..3a43fc2
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" />
+    <inspection_tool class="TsLint" enabled="true" level="WARNING" enabled_by_default="true" />
+  </profile>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..28a804d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..029a1a8
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CommitMessageInspectionProfile">
+    <profile version="1.0">
+      <inspection_tool class="BodyLimit" enabled="true" level="WARNING" enabled_by_default="true" />
+      <inspection_tool class="SubjectBodySeparation" enabled="true" level="WARNING" enabled_by_default="true" />
+      <inspection_tool class="SubjectLimit" enabled="true" level="WARNING" enabled_by_default="true" />
+    </profile>
+  </component>
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.storybook/preview-body.html b/.storybook/preview-body.html
index 11db4b0..b93a3c7 100644
--- a/.storybook/preview-body.html
+++ b/.storybook/preview-body.html
@@ -14,5 +14,6 @@
 <style>
   .sb-show-main > *:nth-child(4) {
     height: 100%;
+    overflow: auto;
   }
 </style>
diff --git a/.stylelintrc.json b/.stylelintrc.json
index d0910b1..5b53952 100644
--- a/.stylelintrc.json
+++ b/.stylelintrc.json
@@ -3,21 +3,7 @@
     "stylelint-config-sass-guidelines"
   ],
   "rules": {
-    "indentation": [
-      2,
-      {
-        "ignore": [
-          "inside-parens"
-        ]
-      }
-    ],
-    "shorthand-property-no-redundant-values": null,
-    "string-quotes": "double",
-    "value-keyword-case": null,
-    "color-hex-length": "long",
-    "property-no-vendor-prefix": null,
-    "function-parentheses-space-inside": null,
-    "block-opening-brace-space-before": "always",
+    "at-rule-name-space-after": "always",
     "block-closing-brace-newline-after": [
       "always",
       {
@@ -27,16 +13,29 @@
         ]
       }
     ],
+    "block-opening-brace-space-before": "always",
+    "color-hex-length": "long",
     "function-parentheses-newline-inside": null,
-    "at-rule-name-space-after": "always",
-    "rule-empty-line-before": "always",
+    "function-parentheses-space-inside": null,
+    "indentation": [
+      2,
+      {
+        "ignore": [
+          "inside-parens"
+        ]
+      }
+    ],
+    "max-nesting-depth": 3,
+    "no-duplicate-selectors": true,
     "order/properties-alphabetical-order": null,
-    "scss/selector-no-redundant-nesting-selector": null,
+    "property-no-vendor-prefix": null,
+    "rule-empty-line-before": "always",
     "scss/at-else-closing-brace-newline-after": "always-last-in-chain",
     "scss/at-else-closing-brace-space-after": "always-intermediate",
     "scss/at-else-empty-line-before": "never",
     "scss/at-if-closing-brace-newline-after": "always-last-in-chain",
     "scss/at-if-closing-brace-space-after": "always-intermediate",
+    "scss/selector-no-redundant-nesting-selector": null,
     "selector-type-no-unknown": [
       true,
       {
@@ -46,6 +45,9 @@
           "mat-checkbox"
         ]
       }
-    ]
+    ],
+    "shorthand-property-no-redundant-values": null,
+    "string-quotes": "double",
+    "value-keyword-case": null
   }
 }
diff --git a/NOTICE.md b/NOTICE.md
index b9981c0..4f620ac 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -47,101 +47,113 @@
 
 ## Third-party Content
 
-@angular/animations (9.1.0)
+@angular-devkit/build-angular (0.901.11)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular-cli
 
-@angular/cdk (9.2.0)
+@angular/animations (9.1.12)
  * License: MIT
- * Source: https://github.com/angular/components
+ * Homepage: https://github.com/angular/angular#readme
 
-@angular/common (9.1.0)
+@angular/cdk (9.2.4)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/components#readme
 
-@angular/compiler (9.1.0)
+@angular/common (9.1.12)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular#readme
 
-@angular/core (9.1.0)
+@angular/core (9.1.12)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular#readme
 
-@angular/forms (9.1.0)
+@angular/forms (9.1.12)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular#readme
 
-@angular/material (9.2.0)
+@angular/material (9.2.4)
  * License: MIT
- * Source: https://github.com/angular/components
+ * Homepage: https://github.com/angular/components#readme
 
-@angular/platform-browser-dynamic (9.1.0)
+@angular/platform-browser (9.1.12)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular#readme
+ 
+@angular/platform-browser-dynamic (9.1.12)
+ * License: MIT
+ * Homepage: https://github.com/angular/angular#readme
 
-@angular/platform-browser (9.1.0)
+@angular/router (9.1.12)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular/tree/master/packages/router
 
-@angular/router (9.1.0)
+@ngrx/effects (9.2.0)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/ngrx/platform#readme
 
-@ngrx/effects (9.0.0)
+@ngrx/store (9.2.0)
  * License: MIT
- * Source: https://github.com/ngrx/platform
-
-@ngrx/store (9.0.0)
- * License: MIT
- * Source: https://github.com/ngrx/platform
+ * Homepage: https://github.com/ngrx/platform#readme
 
 @ngx-translate/core (12.1.2)
  * License: MIT
- * Source: https://github.com/ngx-translate/core
+ * Homepage: https://github.com/ngx-translate/core
 
-@ngx-translate/http-loader (4.0.0)
+@ngx-translate/http-loader (5.0.0)
  * License: MIT
- * Source: https://github.com/ngx-translate/http-loader
+ * Homepage: https://github.com/ngx-translate/http-loader
 
 bpmn-js (6.5.1)
  * License: bpmn.io License (https://bpmn.io/license)
- * Source: https://github.com/bpmn-io/bpmn-js
+ * Homepage: https://github.com/bpmn-io/bpmn-js#readme
+
+core-js (3.6.4)
+ * License: MIT
+ * Homepage: https://github.com/zloirock/core-js#readme
+
+css-loader (3.5.1)
+ * License: MIT
+ * Homepage: https://github.com/webpack-contrib/css-loader
 
 leaflet (1.6.0)
  * License: BSD-2-Clause
- * Source: https://github.com/Leaflet/Leaflet
+ * Homepage: https://leafletjs.com/
 
 material-design-icons (3.0.1)
  * License: Apache-2.0
- * Source: https://github.com/google/material-design-icons
+ * Homepage: https://github.com/google/material-design-icons
 
-moment (2.24.0)
+moment (2.27.0)
  * License: MIT
- * Source: https://github.com/moment/moment
+ * Homepage: https://momentjs.com
 
-primeng (9.0.6)
+primeng (9.1.3)
  * License: MIT
- * Source: https://github.com/primefaces/primeng
+ * Homepage: https://github.com/primefaces/primeng#readme
 
-proj4 (2.6.1)
+regenerator-runtime (0.13.5)
  * License: MIT
- * Source: https://github.com/proj4js/proj4js
+ * Repository: https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime
 
-rxjs (6.5.4)
+rxjs (6.5.5)
  * License: Apache-2.0
- * Source: https://github.com/reactivex/rxjs
+ * Homepage: https://github.com/ReactiveX/RxJS
 
 source-sans-pro (3.6.0)
  * License: OFL-1.1
- * Source: https://github.com/adobe-fonts/source-sans-pro.git#release
+ * Homepage: https://adobe-fonts.github.io/source-sans-pro
 
-tslib (1.11.1)
- * License: Apache-2.0
- * Source: https://github.com/Microsoft/tslib
+tslib (1.13.0)
+ * License: 0BSD
+ * Homepage: https://www.typescriptlang.org/
+
+webpack (4.42.0)
+ * License: MIT
+ * Homepage: https://github.com/webpack/webpack
 
 zone.js (0.10.3)
  * License: MIT
- * Source: https://github.com/angular/angular
+ * Homepage: https://github.com/angular/angular#readme
 
 ## Cryptography
 
diff --git a/angular.json b/angular.json
index a094e44..2e8b24a 100644
--- a/angular.json
+++ b/angular.json
@@ -15,8 +15,11 @@
       "prefix": "app",
       "architect": {
         "build": {
-          "builder": "@angular-devkit/build-angular:browser",
+          "builder": "@angular-builders/custom-webpack:browser",
           "options": {
+            "customWebpackConfig": {
+              "path": "./webpack.config.js"
+            },
             "outputPath": "dist/statement-public-affairs",
             "index": "src/index.html",
             "main": "src/main.ts",
diff --git a/package-lock.json b/package-lock.json
index 3e6d27f..565e02f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,51 +1,92 @@
 {
   "name": "openkonsequenz-statement-public-affairs",
-  "version": "0.3.0",
+  "version": "0.6.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
-    "@angular-devkit/architect": {
-      "version": "0.901.0",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.0.tgz",
-      "integrity": "sha512-SlqEBkPrT40zMCy5344AsUqC76pEPCaGPaAkCIvadaz2dC9vNMzQrvubCPJHViD/TumkSX1kYmLS3iYASVM9GQ==",
+    "@angular-builders/custom-webpack": {
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-9.2.0.tgz",
+      "integrity": "sha512-0ivkjENONFm0oNy6hdCod4YaT4dUk80KuP9+eDliWuZIA70yKQgIYMLul0bz6/i+Cm24PaZ2tq4w7kW7AuSMoA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.1.0",
+        "@angular-devkit/architect": ">=0.900.0 < 0.1000.0",
+        "@angular-devkit/build-angular": ">=0.900.0 < 0.1000.0",
+        "@angular-devkit/core": "^9.0.0",
+        "lodash": "^4.17.10",
+        "ts-node": "^8.5.2",
+        "webpack-merge": "^4.2.1"
+      },
+      "dependencies": {
+        "ts-node": {
+          "version": "8.10.2",
+          "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
+          "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
+          "dev": true,
+          "requires": {
+            "arg": "^4.1.0",
+            "diff": "^4.0.1",
+            "make-error": "^1.1.1",
+            "source-map-support": "^0.5.17",
+            "yn": "3.1.1"
+          }
+        }
+      }
+    },
+    "@angular-devkit/architect": {
+      "version": "0.901.12",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.901.12.tgz",
+      "integrity": "sha512-gLlsxa+3JPV1m1gRvRMujOs4xKox6I5BkYmOD1zfu+dB6y3LuBAvHfXA6FaTDVOMBrmSlWnE4PmOmB6xd7wxMA==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "9.1.12",
         "rxjs": "6.5.4"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "0.901.0",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.0.tgz",
-      "integrity": "sha512-ftJVNlKvIomqRfr5jFVraPqlLSUJu8YyVbFv/aCsvhNpuZGkYpTOMoJDwyywdslSTH608BIoU63IAnIz9PwUdw==",
+      "version": "0.901.12",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.901.12.tgz",
+      "integrity": "sha512-enK+u1Lg1a/KWUs3r8Tc7Igduu5ph9fgziV8bjQeVrswrqFb0m0eEhxe/zV8rvE92H3NBZp5Z+uzOYIcg4eirw==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.901.0",
-        "@angular-devkit/build-optimizer": "0.901.0",
-        "@angular-devkit/build-webpack": "0.901.0",
-        "@angular-devkit/core": "9.1.0",
+        "@angular-devkit/architect": "0.901.12",
+        "@angular-devkit/build-optimizer": "0.901.12",
+        "@angular-devkit/build-webpack": "0.901.12",
+        "@angular-devkit/core": "9.1.12",
         "@babel/core": "7.9.0",
         "@babel/generator": "7.9.3",
         "@babel/preset-env": "7.9.0",
         "@babel/template": "7.8.6",
         "@jsdevtools/coverage-istanbul-loader": "3.0.3",
-        "@ngtools/webpack": "9.1.0",
-        "ajv": "6.12.0",
+        "@ngtools/webpack": "9.1.12",
+        "ajv": "6.12.3",
         "autoprefixer": "9.7.4",
         "babel-loader": "8.0.6",
         "browserslist": "^4.9.1",
         "cacache": "15.0.0",
         "caniuse-lite": "^1.0.30001032",
         "circular-dependency-plugin": "5.2.0",
-        "copy-webpack-plugin": "5.1.1",
+        "copy-webpack-plugin": "6.0.3",
         "core-js": "3.6.4",
+        "css-loader": "3.5.1",
         "cssnano": "4.1.10",
         "file-loader": "6.0.0",
         "find-cache-dir": "3.3.1",
         "glob": "7.1.6",
         "jest-worker": "25.1.0",
         "karma-source-map-support": "1.4.0",
-        "less": "3.11.1",
+        "less": "3.11.3",
         "less-loader": "5.0.0",
         "license-webpack-plugin": "2.1.4",
         "loader-utils": "2.0.0",
@@ -66,23 +107,60 @@
         "semver": "7.1.3",
         "source-map": "0.7.3",
         "source-map-loader": "0.2.4",
-        "source-map-support": "0.5.16",
         "speed-measure-webpack-plugin": "1.3.1",
         "style-loader": "1.1.3",
         "stylus": "0.54.7",
         "stylus-loader": "3.0.2",
-        "terser": "4.6.7",
-        "terser-webpack-plugin": "2.3.5",
+        "terser": "4.6.10",
+        "terser-webpack-plugin": "3.0.3",
         "tree-kill": "1.2.2",
         "webpack": "4.42.0",
         "webpack-dev-middleware": "3.7.2",
-        "webpack-dev-server": "3.10.3",
+        "webpack-dev-server": "3.11.0",
         "webpack-merge": "4.2.2",
         "webpack-sources": "1.4.3",
         "webpack-subresource-integrity": "1.4.0",
-        "worker-plugin": "4.0.2"
+        "worker-plugin": "4.0.3"
       },
       "dependencies": {
+        "@babel/core": {
+          "version": "7.9.0",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz",
+          "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.8.3",
+            "@babel/generator": "^7.9.0",
+            "@babel/helper-module-transforms": "^7.9.0",
+            "@babel/helpers": "^7.9.0",
+            "@babel/parser": "^7.9.0",
+            "@babel/template": "^7.8.6",
+            "@babel/traverse": "^7.9.0",
+            "@babel/types": "^7.9.0",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.1",
+            "json5": "^2.1.2",
+            "lodash": "^4.17.13",
+            "resolve": "^1.3.2",
+            "semver": "^5.4.1",
+            "source-map": "^0.5.0"
+          },
+          "dependencies": {
+            "semver": {
+              "version": "5.7.1",
+              "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+              "dev": true
+            },
+            "source-map": {
+              "version": "0.5.7",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+              "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+              "dev": true
+            }
+          }
+        },
         "autoprefixer": {
           "version": "9.7.4",
           "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz",
@@ -121,6 +199,15 @@
                 "pkg-dir": "^3.0.0"
               }
             },
+            "json5": {
+              "version": "1.0.1",
+              "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+              "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+              "dev": true,
+              "requires": {
+                "minimist": "^1.2.0"
+              }
+            },
             "loader-utils": {
               "version": "1.4.0",
               "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
@@ -134,97 +221,152 @@
             }
           }
         },
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+        "license-webpack-plugin": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz",
+          "integrity": "sha512-1Xq72fmPbTg5KofXs+yI5L4QqPFjQ6mZxoeI6D7gfiEDOtaEIk6PGrdLaej90bpDqKNHNxlQ/MW4tMAL6xMPJQ==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.0"
+            "@types/webpack-sources": "^0.1.5",
+            "webpack-sources": "^1.2.0"
+          }
+        },
+        "parse5": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+          "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+          "dev": true
+        },
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
           }
         }
       }
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.901.0",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.0.tgz",
-      "integrity": "sha512-Y9sz8uf2zjilhPUVYb0K9Mio6c1d5c+csuDc15CCKzELXJwyyDxilIFgn6Eu+edM0HNQGzbIwkjy4DkR9mtuTQ==",
+      "version": "0.901.12",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.901.12.tgz",
+      "integrity": "sha512-XuXA+6y9QkIAwSVZhWmne4r7qugUUWaXobgRefbn9heiRlY8/7XkZmmvbSrxc1fgQfQar52W9fAa19fAIeNvnw==",
       "dev": true,
       "requires": {
         "loader-utils": "2.0.0",
         "source-map": "0.7.3",
         "tslib": "1.11.1",
-        "typescript": "3.8.3",
+        "typescript": "3.6.5",
         "webpack-sources": "1.4.3"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.11.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
+          "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
+          "dev": true
+        },
+        "typescript": {
+          "version": "3.6.5",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.5.tgz",
+          "integrity": "sha512-BEjlc0Z06ORZKbtcxGrIvvwYs5hAnuo6TKdNFL55frVDlB+na3z5bsLhFaIxmT+dPWgBIjMo6aNnTOgHHmHgiQ==",
+          "dev": true
+        }
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.901.0",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.0.tgz",
-      "integrity": "sha512-Oze0VzIvHnoW12C80fiNH4HBu/GWmhJPXdNA7nRkU/tBQlIKnfngf8rQ0QbgecN2qdEXQpZJsP/XclTi3zugsg==",
+      "version": "0.901.12",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.901.12.tgz",
+      "integrity": "sha512-zrhZV2LhQ4uFl9at9i2jiedIu932HsaFN4OMMsTFlV+6CZxtEUBI85hhnPa5KQtIYQr2OMQSQf/FyhnBGs0riQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.901.0",
-        "@angular-devkit/core": "9.1.0",
+        "@angular-devkit/architect": "0.901.12",
+        "@angular-devkit/core": "9.1.12",
         "rxjs": "6.5.4"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
       }
     },
     "@angular-devkit/core": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.0.tgz",
-      "integrity": "sha512-vHTsrB4JaVUQ95FRnKrgo79Y3F6FokImrZdrmwkQmwAThpjXeXmpUEKZS+ZSTFRgesjiIysVGOFijARP4BQ7Bg==",
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.1.12.tgz",
+      "integrity": "sha512-D/GnBeSlmdgGn7EhuE32HuPuRAjvUuxi7Q6WywBI8PSsXKAGnrypghBwMATNnOA24//CgbW2533Y9VWHaeXdeA==",
       "dev": true,
       "requires": {
-        "ajv": "6.12.0",
+        "ajv": "6.12.3",
         "fast-json-stable-stringify": "2.1.0",
         "magic-string": "0.25.7",
         "rxjs": "6.5.4",
         "source-map": "0.7.3"
-      }
-    },
-    "@angular-devkit/schematics": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.0.tgz",
-      "integrity": "sha512-cb9PSvskMwWlL54fPfCcpJoyNDWAX6Wo7CzL5qpIB2cJCPLAuyfRUYYrkO77YUST+n2HvypHz0cZ5SNGMfaaBQ==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "9.1.0",
-        "ora": "4.0.3",
-        "rxjs": "6.5.4"
-      }
-    },
-    "@angular/animations": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.0.tgz",
-      "integrity": "sha512-o7X3HM+eocoryw3VrDUtG6Wci2KwtzyBFo3KBJXjQ16X6fwdkjTG+hLb7pp2CBFBEJW4tPYEy7cSBmEfMRTqag=="
-    },
-    "@angular/cdk": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.0.tgz",
-      "integrity": "sha512-jeeznvNDpR9POuxzz8Y0zFvMynG9HCJo3ZPTqOjlOq8Lj8876+rLsHDvKEMeLdwlkdi1EweYJW1CLQzI+TwqDA==",
-      "requires": {
-        "parse5": "^5.0.0"
       },
       "dependencies": {
-        "parse5": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
-          "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
-          "optional": true
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
         }
       }
     },
-    "@angular/cli": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.0.tgz",
-      "integrity": "sha512-ofum4gPE/W3fKyzuJrpdHeOS0ZL8x0eYCgsrMyUoFodSpb5LWPqeW+56NgDTpIeny+Trx3pM9dr9QTUVTJ0vYg==",
+    "@angular-devkit/schematics": {
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.1.12.tgz",
+      "integrity": "sha512-+GYnUzmIy1/QpYitCC8mI7jcrViGHTtOKvvDPEFjU2nggjNEQaMmsHcdIsjrqggEc23ZZyebNAIewT8CMkJyrQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.901.0",
-        "@angular-devkit/core": "9.1.0",
-        "@angular-devkit/schematics": "9.1.0",
-        "@schematics/angular": "9.1.0",
-        "@schematics/update": "0.901.0",
+        "@angular-devkit/core": "9.1.12",
+        "ora": "4.0.3",
+        "rxjs": "6.5.4"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
+      }
+    },
+    "@angular/animations": {
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.1.12.tgz",
+      "integrity": "sha512-tphpf9QHnOPoL2Jl7KpR+R5aHNW3oifLEmRUTajJYJGvo1uzdUDE82+V9OGOinxJsYseCth9gYJhN24aYTB9NA=="
+    },
+    "@angular/cdk": {
+      "version": "9.2.4",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.2.4.tgz",
+      "integrity": "sha512-iw2+qHMXHYVC6K/fttHeNHIieSKiTEodVutZoOEcBu9rmRTGbLB26V/CRsfIRmA1RBk+uFYWc6UQZnMC3RdnJQ==",
+      "requires": {
+        "parse5": "^5.0.0"
+      }
+    },
+    "@angular/cli": {
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.1.12.tgz",
+      "integrity": "sha512-B0yOab5WbD84bIRRUKOPAJnpka8Qj+CRt61wJfjsqpd/Rj7pD/3ubmdCNoBH7Xa6UlOb0tdYqRPsqfK7uEL0sw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.901.12",
+        "@angular-devkit/core": "9.1.12",
+        "@angular-devkit/schematics": "9.1.12",
+        "@schematics/angular": "9.1.12",
+        "@schematics/update": "0.901.12",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
         "debug": "4.1.1",
@@ -233,7 +375,7 @@
         "npm-package-arg": "8.0.1",
         "npm-pick-manifest": "6.0.0",
         "open": "7.0.3",
-        "pacote": "11.1.4",
+        "pacote": "9.5.12",
         "read-package-tree": "5.3.1",
         "rimraf": "3.0.2",
         "semver": "7.1.3",
@@ -257,19 +399,19 @@
       }
     },
     "@angular/common": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.0.tgz",
-      "integrity": "sha512-6JPLNtMhI03bGTVQJeSwc+dTjV6DtP7M/BAyzIV0InZP1D6XsOh2QahLFIaaN2sSxYA2ClKuwfX1v+rx9AbXQA=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.12.tgz",
+      "integrity": "sha512-XSIqkbM6VV1yixF9zuzeE5eqN1VsiXS517K2VU0XgCRSAzhVhLOeKsdYjeLf7PdSu/HgW/Tr81H+isi9A9I0YA=="
     },
     "@angular/compiler": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.0.tgz",
-      "integrity": "sha512-QHw/JSeTXHiJQ2Ih0EtU7FGsYcOr+0hwZhqwSW3EEn8TtUgA3DS5lXeiDV66f+3DdvNZFPmgiZIvun3ypxn1HA=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.12.tgz",
+      "integrity": "sha512-suefk0OFkaJpUUKnV+phbL4T8fmVGHvzkereY5eqybQlumOez8NPL1PJcygAylh/E6OIAYm8SWookYwM6ZY9dg=="
     },
     "@angular/compiler-cli": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.0.tgz",
-      "integrity": "sha512-xZ8mVPmPporSTtvNA+cbFJQymLzuWfMX6HDDgztZ2eZ5WcQJYloRN4CcYMEzDhCxfV1Zw9Tfc2l14jZD8osi6g==",
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.1.12.tgz",
+      "integrity": "sha512-bbqJ+fbY+aQejSYuHUjE1qYJCXkZBM5Hru9eN7m/j376u83MQ5jWdC290uYx+ipsXcPTa/YRZ44jpL+5cCzIrg==",
       "dev": true,
       "requires": {
         "canonical-path": "1.0.0",
@@ -328,6 +470,12 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
         "find-up": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
@@ -338,12 +486,6 @@
             "path-exists": "^4.0.0"
           }
         },
-        "get-caller-file": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-          "dev": true
-        },
         "is-fullwidth-code-point": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -359,15 +501,6 @@
             "p-locate": "^4.1.0"
           }
         },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
         "p-locate": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
@@ -377,24 +510,12 @@
             "p-limit": "^2.2.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
         "path-exists": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
           "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
           "dev": true
         },
-        "require-main-filename": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-          "dev": true
-        },
         "semver": {
           "version": "6.3.0",
           "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -458,9 +579,9 @@
           }
         },
         "yargs-parser": {
-          "version": "18.1.2",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz",
-          "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==",
+          "version": "18.1.3",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
           "dev": true,
           "requires": {
             "camelcase": "^5.0.0",
@@ -470,57 +591,57 @@
       }
     },
     "@angular/core": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.0.tgz",
-      "integrity": "sha512-RVlyegdIAij0P1wLY5ObIdsBAzvmHkHfElnmfiNKhaDftP6U/3zRtaKDu0bq0jvn1WCQ8zXxFQ8AWyKZwyFS+w=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.12.tgz",
+      "integrity": "sha512-WVA/eh3fzjx0apOzkKot4YRRUsGkHj50zFQWrAOMgivGaj1YVrvhf+m3hpglj5fn/BkLiFDl8RT0wAE8z9X+gQ=="
     },
     "@angular/forms": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.0.tgz",
-      "integrity": "sha512-5GC8HQlPChPV+168zLlm4yj4syA6N9ChSKV0tmzj1zIfMcub1UAOaB9IYaXRHQsjPFh9OuQXwmkzScyAfhEVjA=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.12.tgz",
+      "integrity": "sha512-LhjnZlC4WEsEsAJfOZLte+Lks3WBAFVeRv2lzoQNFVr/IMzBNDVfjEaaSqKF1cei3cjY39Df2nYDMJM7HfqbJA=="
     },
     "@angular/language-service": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.0.tgz",
-      "integrity": "sha512-2f8ECoXrj40oS1rtIfi+F8T4WPzundcZDs8WMFNBuWYbk14v1S9sTgMEmZyePHGkPjt6IfYiLJKJCvVgrt1nxQ==",
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.1.12.tgz",
+      "integrity": "sha512-0qfIAn5fP5lD+JW6il5HBHGS89rv+idRv5aooDkHqBhuBo4V2VuB1wNy5eP49GZbHKMW1xPAzv1MqeMdk+zwQA==",
       "dev": true
     },
     "@angular/material": {
-      "version": "9.2.0",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.0.tgz",
-      "integrity": "sha512-KKzEIVh6/m56m+Ao8p4PK0SyEr0574l3VP2swj1qPag3u+FYgemmXCGTaChrKdDsez+zeTCPXImBGXzE6NQ80Q=="
+      "version": "9.2.4",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.2.4.tgz",
+      "integrity": "sha512-LkoTXE6B0slvMhvfZDdPWaz4yaYLkaAp5VSPunI9pxGsPxzqEV9e210wC1/sjG/76Nk8Ep7/2z9XKac8Q9bMwA=="
     },
     "@angular/platform-browser": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.0.tgz",
-      "integrity": "sha512-OsS/blUjl8ranmDaRADjFAmvnlmwbT6WNU7dVov7FhV0rqesbwaOJ5bR0LSYHYpej7Jaa6oYk0v0XWkaH9LTFg=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.12.tgz",
+      "integrity": "sha512-rPa/hJcLfdId6bYB0b6pFUo3QIgjZlvUlmtKMGdrLNLYR8XQxPa2Y/UdN/5YeZ12htGw6GXrX9U8U7nTbUSpkw=="
     },
     "@angular/platform-browser-dynamic": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.0.tgz",
-      "integrity": "sha512-sMtz/poQ3TYaWZzWjrn9apKUZ/WKql2MYCWbpax7pql3GgC9OoTslc7ZEe7/d3ynfFE/CQqWBBOuWGD71Z0LMQ=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.12.tgz",
+      "integrity": "sha512-NmwUZaQeMnA6f+vP9Fp9P+qjL72H8dKlxLS76ujlKHVf75pP5oahWS8wfl7KXel1tKW3FQWMMffmKf5/NHRiSw=="
     },
     "@angular/router": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.0.tgz",
-      "integrity": "sha512-cExO1nPnoPFiUJWZ28hTHozPLFoCmqr3xqcM57We0hhKE0esdrO+gRWKRH0EJERukLbU8coPKVhA8daGUpASiQ=="
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.12.tgz",
+      "integrity": "sha512-+qCaXa9y0nsRhzjAYBqmGoQ2YkrdXgftZwuFDf6t4qEi30EXa0oS97KrlFq0M5GKdLIDGrbUm9PcdHSTOI+ZhA=="
     },
     "@babel/code-frame": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-      "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
+      "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
       "dev": true,
       "requires": {
-        "@babel/highlight": "^7.8.3"
+        "@babel/highlight": "^7.10.4"
       }
     },
     "@babel/compat-data": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz",
-      "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz",
+      "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.9.1",
+        "browserslist": "^4.12.0",
         "invariant": "^2.2.4",
         "semver": "^5.5.0"
       },
@@ -534,29 +655,51 @@
       }
     },
     "@babel/core": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz",
-      "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==",
+      "version": "7.11.1",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz",
+      "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "^7.8.3",
-        "@babel/generator": "^7.9.0",
-        "@babel/helper-module-transforms": "^7.9.0",
-        "@babel/helpers": "^7.9.0",
-        "@babel/parser": "^7.9.0",
-        "@babel/template": "^7.8.6",
-        "@babel/traverse": "^7.9.0",
-        "@babel/types": "^7.9.0",
+        "@babel/code-frame": "^7.10.4",
+        "@babel/generator": "^7.11.0",
+        "@babel/helper-module-transforms": "^7.11.0",
+        "@babel/helpers": "^7.10.4",
+        "@babel/parser": "^7.11.1",
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.11.0",
+        "@babel/types": "^7.11.0",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.1",
         "json5": "^2.1.2",
-        "lodash": "^4.17.13",
+        "lodash": "^4.17.19",
         "resolve": "^1.3.2",
         "semver": "^5.4.1",
         "source-map": "^0.5.0"
       },
       "dependencies": {
+        "@babel/generator": {
+          "version": "7.11.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz",
+          "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.11.0",
+            "jsesc": "^2.5.1",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -592,32 +735,32 @@
       }
     },
     "@babel/helper-annotate-as-pure": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
-      "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz",
+      "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
-      "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
+      "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==",
       "dev": true,
       "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.8.3",
-        "@babel/types": "^7.8.3"
+        "@babel/helper-explode-assignable-expression": "^7.10.4",
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-compilation-targets": {
-      "version": "7.8.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz",
-      "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz",
+      "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==",
       "dev": true,
       "requires": {
-        "@babel/compat-data": "^7.8.6",
-        "browserslist": "^4.9.1",
+        "@babel/compat-data": "^7.10.4",
+        "browserslist": "^4.12.0",
         "invariant": "^2.2.4",
         "levenary": "^1.1.1",
         "semver": "^5.5.0"
@@ -632,326 +775,415 @@
       }
     },
     "@babel/helper-create-class-features-plugin": {
-      "version": "7.8.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz",
-      "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz",
+      "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.8.3",
-        "@babel/helper-member-expression-to-functions": "^7.8.3",
-        "@babel/helper-optimise-call-expression": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-replace-supers": "^7.8.6",
-        "@babel/helper-split-export-declaration": "^7.8.3"
+        "@babel/helper-function-name": "^7.10.4",
+        "@babel/helper-member-expression-to-functions": "^7.10.5",
+        "@babel/helper-optimise-call-expression": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-replace-supers": "^7.10.4",
+        "@babel/helper-split-export-declaration": "^7.10.4"
       }
     },
     "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.8.8",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz",
-      "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz",
+      "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.8.3",
-        "@babel/helper-regex": "^7.8.3",
+        "@babel/helper-annotate-as-pure": "^7.10.4",
+        "@babel/helper-regex": "^7.10.4",
         "regexpu-core": "^4.7.0"
       }
     },
     "@babel/helper-define-map": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
-      "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
+      "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.8.3",
-        "@babel/types": "^7.8.3",
-        "lodash": "^4.17.13"
+        "@babel/helper-function-name": "^7.10.4",
+        "@babel/types": "^7.10.5",
+        "lodash": "^4.17.19"
       }
     },
     "@babel/helper-explode-assignable-expression": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
-      "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz",
+      "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==",
       "dev": true,
       "requires": {
-        "@babel/traverse": "^7.8.3",
-        "@babel/types": "^7.8.3"
+        "@babel/traverse": "^7.10.4",
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-function-name": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
-      "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
+      "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-get-function-arity": "^7.8.3",
-        "@babel/template": "^7.8.3",
-        "@babel/types": "^7.8.3"
+        "@babel/helper-get-function-arity": "^7.10.4",
+        "@babel/template": "^7.10.4",
+        "@babel/types": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        }
       }
     },
     "@babel/helper-get-function-arity": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
-      "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
+      "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-hoist-variables": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
-      "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz",
+      "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-member-expression-to-functions": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
-      "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz",
+      "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.11.0"
       }
     },
     "@babel/helper-module-imports": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
-      "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz",
+      "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-module-transforms": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
-      "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz",
+      "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.8.3",
-        "@babel/helper-replace-supers": "^7.8.6",
-        "@babel/helper-simple-access": "^7.8.3",
-        "@babel/helper-split-export-declaration": "^7.8.3",
-        "@babel/template": "^7.8.6",
-        "@babel/types": "^7.9.0",
-        "lodash": "^4.17.13"
+        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-replace-supers": "^7.10.4",
+        "@babel/helper-simple-access": "^7.10.4",
+        "@babel/helper-split-export-declaration": "^7.11.0",
+        "@babel/template": "^7.10.4",
+        "@babel/types": "^7.11.0",
+        "lodash": "^4.17.19"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        }
       }
     },
     "@babel/helper-optimise-call-expression": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
-      "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz",
+      "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-plugin-utils": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
-      "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
+      "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
       "dev": true
     },
     "@babel/helper-regex": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
-      "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz",
+      "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==",
       "dev": true,
       "requires": {
-        "lodash": "^4.17.13"
+        "lodash": "^4.17.19"
       }
     },
     "@babel/helper-remap-async-to-generator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
-      "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz",
+      "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.8.3",
-        "@babel/helper-wrap-function": "^7.8.3",
-        "@babel/template": "^7.8.3",
-        "@babel/traverse": "^7.8.3",
-        "@babel/types": "^7.8.3"
+        "@babel/helper-annotate-as-pure": "^7.10.4",
+        "@babel/helper-wrap-function": "^7.10.4",
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.10.4",
+        "@babel/types": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        }
       }
     },
     "@babel/helper-replace-supers": {
-      "version": "7.8.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
-      "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz",
+      "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==",
       "dev": true,
       "requires": {
-        "@babel/helper-member-expression-to-functions": "^7.8.3",
-        "@babel/helper-optimise-call-expression": "^7.8.3",
-        "@babel/traverse": "^7.8.6",
-        "@babel/types": "^7.8.6"
+        "@babel/helper-member-expression-to-functions": "^7.10.4",
+        "@babel/helper-optimise-call-expression": "^7.10.4",
+        "@babel/traverse": "^7.10.4",
+        "@babel/types": "^7.10.4"
       }
     },
     "@babel/helper-simple-access": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
-      "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz",
+      "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==",
       "dev": true,
       "requires": {
-        "@babel/template": "^7.8.3",
-        "@babel/types": "^7.8.3"
+        "@babel/template": "^7.10.4",
+        "@babel/types": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        }
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz",
+      "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.11.0"
       }
     },
     "@babel/helper-split-export-declaration": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
-      "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
+      "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.8.3"
+        "@babel/types": "^7.11.0"
       }
     },
     "@babel/helper-validator-identifier": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz",
-      "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
+      "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
       "dev": true
     },
     "@babel/helper-wrap-function": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
-      "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz",
+      "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.8.3",
-        "@babel/template": "^7.8.3",
-        "@babel/traverse": "^7.8.3",
-        "@babel/types": "^7.8.3"
+        "@babel/helper-function-name": "^7.10.4",
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.10.4",
+        "@babel/types": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        }
       }
     },
     "@babel/helpers": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
-      "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz",
+      "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==",
       "dev": true,
       "requires": {
-        "@babel/template": "^7.8.3",
-        "@babel/traverse": "^7.9.0",
-        "@babel/types": "^7.9.0"
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.10.4",
+        "@babel/types": "^7.10.4"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        }
       }
     },
     "@babel/highlight": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
-      "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
+      "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
       "dev": true,
       "requires": {
-        "@babel/helper-validator-identifier": "^7.9.0",
+        "@babel/helper-validator-identifier": "^7.10.4",
         "chalk": "^2.0.0",
         "js-tokens": "^4.0.0"
       }
     },
     "@babel/parser": {
-      "version": "7.9.4",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
-      "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
+      "version": "7.11.2",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz",
+      "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==",
       "dev": true
     },
     "@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
-      "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz",
+      "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-remap-async-to-generator": "^7.8.3",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-remap-async-to-generator": "^7.10.4",
         "@babel/plugin-syntax-async-generators": "^7.8.0"
       }
     },
     "@babel/plugin-proposal-class-properties": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz",
-      "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz",
+      "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-create-class-features-plugin": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-proposal-dynamic-import": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz",
-      "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz",
+      "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
+        "@babel/helper-plugin-utils": "^7.10.4",
         "@babel/plugin-syntax-dynamic-import": "^7.8.0"
       }
     },
     "@babel/plugin-proposal-json-strings": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
-      "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz",
+      "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
+        "@babel/helper-plugin-utils": "^7.10.4",
         "@babel/plugin-syntax-json-strings": "^7.8.0"
       }
     },
     "@babel/plugin-proposal-nullish-coalescing-operator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz",
-      "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz",
+      "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
+        "@babel/helper-plugin-utils": "^7.10.4",
         "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
       }
     },
     "@babel/plugin-proposal-numeric-separator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz",
-      "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/plugin-syntax-numeric-separator": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
       }
     },
     "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz",
-      "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz",
+      "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.0"
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+        "@babel/plugin-transform-parameters": "^7.10.4"
       }
     },
     "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
-      "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz",
+      "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
+        "@babel/helper-plugin-utils": "^7.10.4",
         "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
       }
     },
     "@babel/plugin-proposal-optional-chaining": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz",
-      "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz",
+      "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0",
         "@babel/plugin-syntax-optional-chaining": "^7.8.0"
       }
     },
     "@babel/plugin-proposal-unicode-property-regex": {
-      "version": "7.8.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz",
-      "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz",
+      "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.8.8",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-syntax-async-generators": {
@@ -991,12 +1223,12 @@
       }
     },
     "@babel/plugin-syntax-numeric-separator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz",
-      "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-syntax-object-rest-spread": {
@@ -1027,327 +1259,327 @@
       }
     },
     "@babel/plugin-syntax-top-level-await": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz",
-      "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz",
+      "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-arrow-functions": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
-      "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz",
+      "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-async-to-generator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
-      "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz",
+      "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-remap-async-to-generator": "^7.8.3"
+        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-remap-async-to-generator": "^7.10.4"
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
-      "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz",
+      "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-block-scoping": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
-      "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
+      "version": "7.11.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz",
+      "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "lodash": "^4.17.13"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-classes": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz",
-      "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz",
+      "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.8.3",
-        "@babel/helper-define-map": "^7.8.3",
-        "@babel/helper-function-name": "^7.8.3",
-        "@babel/helper-optimise-call-expression": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-replace-supers": "^7.8.6",
-        "@babel/helper-split-export-declaration": "^7.8.3",
+        "@babel/helper-annotate-as-pure": "^7.10.4",
+        "@babel/helper-define-map": "^7.10.4",
+        "@babel/helper-function-name": "^7.10.4",
+        "@babel/helper-optimise-call-expression": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-replace-supers": "^7.10.4",
+        "@babel/helper-split-export-declaration": "^7.10.4",
         "globals": "^11.1.0"
       }
     },
     "@babel/plugin-transform-computed-properties": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
-      "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz",
+      "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-destructuring": {
-      "version": "7.8.8",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz",
-      "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz",
+      "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-dotall-regex": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
-      "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz",
+      "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
-      "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz",
+      "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
-      "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz",
+      "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==",
       "dev": true,
       "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-for-of": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz",
-      "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz",
+      "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-function-name": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
-      "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz",
+      "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-function-name": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-literals": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
-      "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz",
+      "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz",
-      "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz",
+      "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-modules-amd": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
-      "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz",
+      "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.9.0",
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "babel-plugin-dynamic-import-node": "^2.3.0"
+        "@babel/helper-module-transforms": "^7.10.5",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz",
-      "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz",
+      "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.9.0",
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-simple-access": "^7.8.3",
-        "babel-plugin-dynamic-import-node": "^2.3.0"
+        "@babel/helper-module-transforms": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-simple-access": "^7.10.4",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
-      "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz",
+      "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==",
       "dev": true,
       "requires": {
-        "@babel/helper-hoist-variables": "^7.8.3",
-        "@babel/helper-module-transforms": "^7.9.0",
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "babel-plugin-dynamic-import-node": "^2.3.0"
+        "@babel/helper-hoist-variables": "^7.10.4",
+        "@babel/helper-module-transforms": "^7.10.5",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-umd": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
-      "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz",
+      "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.9.0",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-module-transforms": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
-      "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz",
+      "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.8.3"
+        "@babel/helper-create-regexp-features-plugin": "^7.10.4"
       }
     },
     "@babel/plugin-transform-new-target": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
-      "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz",
+      "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-object-super": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
-      "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz",
+      "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-replace-supers": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-replace-supers": "^7.10.4"
       }
     },
     "@babel/plugin-transform-parameters": {
-      "version": "7.9.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz",
-      "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz",
+      "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==",
       "dev": true,
       "requires": {
-        "@babel/helper-get-function-arity": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-get-function-arity": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-property-literals": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz",
-      "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz",
+      "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-react-constant-elements": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz",
-      "integrity": "sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz",
+      "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-regenerator": {
-      "version": "7.8.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
-      "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz",
+      "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==",
       "dev": true,
       "requires": {
         "regenerator-transform": "^0.14.2"
       }
     },
     "@babel/plugin-transform-reserved-words": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz",
-      "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz",
+      "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
-      "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz",
+      "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-spread": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
-      "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz",
+      "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0"
       }
     },
     "@babel/plugin-transform-sticky-regex": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
-      "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz",
+      "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3",
-        "@babel/helper-regex": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-regex": "^7.10.4"
       }
     },
     "@babel/plugin-transform-template-literals": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
-      "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
+      "version": "7.10.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz",
+      "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-annotate-as-pure": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.8.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
-      "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz",
+      "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/plugin-transform-unicode-regex": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
-      "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz",
+      "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.8.3",
-        "@babel/helper-plugin-utils": "^7.8.3"
+        "@babel/helper-create-regexp-features-plugin": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4"
       }
     },
     "@babel/preset-env": {
@@ -1440,9 +1672,9 @@
       }
     },
     "@babel/runtime": {
-      "version": "7.9.2",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
-      "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
+      "version": "7.11.2",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
+      "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
@@ -1460,30 +1692,49 @@
       }
     },
     "@babel/traverse": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz",
-      "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz",
+      "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "^7.8.3",
-        "@babel/generator": "^7.9.0",
-        "@babel/helper-function-name": "^7.8.3",
-        "@babel/helper-split-export-declaration": "^7.8.3",
-        "@babel/parser": "^7.9.0",
-        "@babel/types": "^7.9.0",
+        "@babel/code-frame": "^7.10.4",
+        "@babel/generator": "^7.11.0",
+        "@babel/helper-function-name": "^7.10.4",
+        "@babel/helper-split-export-declaration": "^7.11.0",
+        "@babel/parser": "^7.11.0",
+        "@babel/types": "^7.11.0",
         "debug": "^4.1.0",
         "globals": "^11.1.0",
-        "lodash": "^4.17.13"
+        "lodash": "^4.17.19"
+      },
+      "dependencies": {
+        "@babel/generator": {
+          "version": "7.11.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz",
+          "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.11.0",
+            "jsesc": "^2.5.1",
+            "source-map": "^0.5.0"
+          }
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
       }
     },
     "@babel/types": {
-      "version": "7.9.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
-      "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
+      "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
       "dev": true,
       "requires": {
-        "@babel/helper-validator-identifier": "^7.9.0",
-        "lodash": "^4.17.13",
+        "@babel/helper-validator-identifier": "^7.10.4",
+        "lodash": "^4.17.19",
         "to-fast-properties": "^2.0.0"
       }
     },
@@ -1556,6 +1807,14 @@
         "@emotion/unitless": "0.7.5",
         "@emotion/utils": "0.11.3",
         "csstype": "^2.5.7"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "2.6.13",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.13.tgz",
+          "integrity": "sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==",
+          "dev": true
+        }
       }
     },
     "@emotion/sheet": {
@@ -1668,31 +1927,42 @@
       }
     },
     "@ngrx/effects": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-9.0.0.tgz",
-      "integrity": "sha512-6Rq7FsNZK26HqYlpOGCglKLenIkVOOKE0y6D/8KXjEJ1JlZWi00fdI7poclBGjm9pvMBGXfJA8a9MKuxb/t9cA=="
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-9.2.0.tgz",
+      "integrity": "sha512-8V09zDIPehGpzgfcgyczelovsVYJvDQhN9wHt37K5A+YCG0CI8nj8FmKokHATwv/S62YqFrOVnr/TZacxpDhBw=="
     },
     "@ngrx/store": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-9.0.0.tgz",
-      "integrity": "sha512-QnmfXJ4G2jp+vFaqT5Qfp6h0J9OHxfDKI2RbnMU93Tq1Xd/WVPzXnOQGjILBjwwWI6RFkSdIpUoQONr7VOW63g=="
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-9.2.0.tgz",
+      "integrity": "sha512-V8AI3mxbMztVpbZpALkLZYlGkofKcu9GaOCY5e+sZ1VcJ90oxhFjBpnmd6MuVdmhep1XAHALb1B8ZbBFn+xsgQ=="
     },
     "@ngrx/store-devtools": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-9.0.0.tgz",
-      "integrity": "sha512-Vj8sj8GclbSbnYCS8eqZXTOYDdip1nnjKhkYClUg2oFPh67haaCmvh7TXITnX8PpgDtj5akF84Xw9/1HRiG8mg==",
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-9.2.0.tgz",
+      "integrity": "sha512-/FvgcpjO4IvwNFnRVoHGikAvckr6fxKf4NgYoTQ9giI8xavolLvuQUHxzH20legi5dgZz34ii2m2g1Q7OxEV8w==",
       "dev": true
     },
     "@ngtools/webpack": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.0.tgz",
-      "integrity": "sha512-kQ+1N/F+5tuUXiiaoqJwhcOIM0I93EEvF3xwpTLRm91wl2i8R1261LvsD/uQPrgLrZNGR6eFhFF1Izn2PnIjQA==",
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.1.12.tgz",
+      "integrity": "sha512-lypMXIq5oxBMsoDu/VOa1yUmmXthhxkCJa8LG0ZohfnbwhmZvz3SAW7omBGuVrb5cVIfLCkaRCSnQ1MNc6ULXw==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.1.0",
+        "@angular-devkit/core": "9.1.12",
         "enhanced-resolve": "4.1.1",
         "rxjs": "6.5.4",
         "webpack-sources": "1.4.3"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
       }
     },
     "@ngx-translate/core": {
@@ -1701,12 +1971,9 @@
       "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ=="
     },
     "@ngx-translate/http-loader": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz",
-      "integrity": "sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==",
-      "requires": {
-        "tslib": "^1.9.0"
-      }
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-5.0.0.tgz",
+      "integrity": "sha512-8+aV7N52qed+6t4LIu4Yru/PkeBX4TR2ioXGwXzQE5syqSLTj/8TgKQIi3i2Z61ZhPxQG1qrGbapUoGQzUDVeg=="
     },
     "@nodelib/fs.scandir": {
       "version": "2.1.3",
@@ -1716,20 +1983,12 @@
       "requires": {
         "@nodelib/fs.stat": "2.0.3",
         "run-parallel": "^1.1.9"
-      },
-      "dependencies": {
-        "@nodelib/fs.stat": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
-          "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
-          "dev": true
-        }
       }
     },
     "@nodelib/fs.stat": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
-      "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
+      "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
       "dev": true
     },
     "@nodelib/fs.walk": {
@@ -1742,69 +2001,27 @@
         "fastq": "^1.6.0"
       }
     },
-    "@npmcli/ci-detect": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz",
-      "integrity": "sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA==",
-      "dev": true
-    },
-    "@npmcli/git": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.1.tgz",
-      "integrity": "sha512-hVatexiBtx71F01Ars38Hr5AFUGmJgHAfQtRlO5fJlnAawRGSXwEFgjB5i3XdUUmElZU/RXy7fefN02dZKxgPw==",
+    "@npmcli/move-file": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz",
+      "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==",
       "dev": true,
       "requires": {
-        "@npmcli/promise-spawn": "^1.1.0",
-        "mkdirp": "^1.0.3",
-        "npm-pick-manifest": "^6.0.0",
-        "promise-inflight": "^1.0.1",
-        "promise-retry": "^1.1.1",
-        "unique-filename": "^1.1.1",
-        "which": "^2.0.2"
+        "mkdirp": "^1.0.4"
       },
       "dependencies": {
         "mkdirp": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz",
-          "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==",
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
           "dev": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
         }
       }
     },
-    "@npmcli/installed-package-contents": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz",
-      "integrity": "sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A==",
-      "dev": true,
-      "requires": {
-        "npm-bundled": "^1.1.1",
-        "npm-normalize-package-bin": "^1.0.1",
-        "read-package-json-fast": "^1.1.1",
-        "readdir-scoped-modules": "^1.1.0"
-      }
-    },
-    "@npmcli/promise-spawn": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.1.0.tgz",
-      "integrity": "sha512-FwbuYN9KXBkloLeIR3xRgI8dyOdfK/KzaJlChszNuwmUXD1lHXfLlSeo4n4KrKt2udIK9K9/TzlnyCA3ubM2fA==",
-      "dev": true,
-      "requires": {
-        "infer-owner": "^1.0.4"
-      }
-    },
     "@reach/router": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.3.tgz",
-      "integrity": "sha512-gOIAiFhWdiVGSVjukKeNKkCRBLmnORoTPyBihI/jLunICPgxdP30DroAvPQuf1eVfQbfGJQDJkwhJXsNPMnVWw==",
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz",
+      "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==",
       "dev": true,
       "requires": {
         "create-react-context": "0.3.0",
@@ -1814,44 +2031,55 @@
       }
     },
     "@schematics/angular": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.0.tgz",
-      "integrity": "sha512-qkehaITQ1S1udfnnBY5CXGWnk1iVFI8cZayjLUlRfD5w+6v9if3VIuqPssX96MqvkbjyRu1N214+ieaawzLmuA==",
+      "version": "9.1.12",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.1.12.tgz",
+      "integrity": "sha512-r4+aPAGhstsKFMwW/kOen1ACnzuLpz+vMxEpndXOqqVXLkAMsuAbQUFYjIlMy6fH4zdhpI90EJZ1PbOrAXvKxA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.1.0",
-        "@angular-devkit/schematics": "9.1.0"
+        "@angular-devkit/core": "9.1.12",
+        "@angular-devkit/schematics": "9.1.12"
       }
     },
     "@schematics/update": {
-      "version": "0.901.0",
-      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.0.tgz",
-      "integrity": "sha512-u2VESL1dgOSGZK/wcWEz0WcCU/yv764zhzCQerCwUtbV1CISSSDZ6x+prVYDXOdxWBGtDos2MbCF3GEJJI1T+w==",
+      "version": "0.901.12",
+      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.901.12.tgz",
+      "integrity": "sha512-SxGVYLTHhBC0rSF0OWSWPuJUB1Jhfqkl3o5bBgCC9//DutWiN6WoCCBTrCxR7F5vR2iiD7WqOe9CuvWYfvV8oQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.1.0",
-        "@angular-devkit/schematics": "9.1.0",
+        "@angular-devkit/core": "9.1.12",
+        "@angular-devkit/schematics": "9.1.12",
         "@yarnpkg/lockfile": "1.1.0",
         "ini": "1.3.5",
         "npm-package-arg": "^8.0.0",
-        "pacote": "11.1.4",
+        "pacote": "9.5.12",
         "rxjs": "6.5.4",
         "semver": "7.1.3",
         "semver-intersect": "1.4.0"
+      },
+      "dependencies": {
+        "rxjs": {
+          "version": "6.5.4",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+          "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        }
       }
     },
     "@storybook/addon-actions": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.3.18.tgz",
-      "integrity": "sha512-jdBVCcfyWin274Lkwg5cL+1fJ651NCuIWxuJVsmHQtIl2xTjf2MyoMoKQZNdt4xtE+W9w+rS4bYt04elrizThg==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.3.19.tgz",
+      "integrity": "sha512-gXF29FFUgYlUoFf1DcVCmH1chg2ElaHWMmCi5h7aZe+g6fXBQw0UtEdJnYLMOqZCIiWoZyuf1ETD0RbNHPhRIw==",
       "dev": true,
       "requires": {
-        "@storybook/addons": "5.3.18",
-        "@storybook/api": "5.3.18",
-        "@storybook/client-api": "5.3.18",
-        "@storybook/components": "5.3.18",
-        "@storybook/core-events": "5.3.18",
-        "@storybook/theming": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/api": "5.3.19",
+        "@storybook/client-api": "5.3.19",
+        "@storybook/components": "5.3.19",
+        "@storybook/core-events": "5.3.19",
+        "@storybook/theming": "5.3.19",
         "core-js": "^3.0.1",
         "fast-deep-equal": "^2.0.1",
         "global": "^4.3.2",
@@ -1871,17 +2099,17 @@
       }
     },
     "@storybook/addon-knobs": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.3.18.tgz",
-      "integrity": "sha512-X0WxGKoso3j5mS4c4enM8BvCjbO6Wwfxc++swQTqtANpBZ8k+w0piiEF1fiJf+ssgEAWe5brgIqnQ9kiBGLqKA==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.3.19.tgz",
+      "integrity": "sha512-e7z6KhvVOUGjygK4VL5Un1U3t0XG0jkb/BOHVWQMtH5dWNn3zofD3LrZZy24eAsyre/ej/LGo/BzwDSXkKLTog==",
       "dev": true,
       "requires": {
-        "@storybook/addons": "5.3.18",
-        "@storybook/api": "5.3.18",
-        "@storybook/client-api": "5.3.18",
-        "@storybook/components": "5.3.18",
-        "@storybook/core-events": "5.3.18",
-        "@storybook/theming": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/api": "5.3.19",
+        "@storybook/client-api": "5.3.19",
+        "@storybook/components": "5.3.19",
+        "@storybook/core-events": "5.3.19",
+        "@storybook/theming": "5.3.19",
         "@types/react-color": "^3.0.1",
         "copy-to-clipboard": "^3.0.8",
         "core-js": "^3.0.1",
@@ -1903,24 +2131,24 @@
           "dev": true
         },
         "qs": {
-          "version": "6.9.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-          "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
+          "version": "6.9.4",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+          "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
           "dev": true
         }
       }
     },
     "@storybook/addon-links": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-5.3.18.tgz",
-      "integrity": "sha512-rDpsAQUr60BEM83TBh7mwKjaZvqTR+CAAMLAxXN+J8DMoOjymjd2sjq4UVJsOQVTnw3wjIc4+xpAL/eYqkJAIQ==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-5.3.19.tgz",
+      "integrity": "sha512-gn9u8lebREfRsyzxoDPG0O+kOf5aJ0BhzcCJGZZdqha0F6OWHhh8vJYZZvjJ/Qwze+Qt2zjrgWm+Q6+JLD8ugQ==",
       "dev": true,
       "requires": {
-        "@storybook/addons": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/core-events": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/core-events": "5.3.19",
         "@storybook/csf": "0.0.1",
-        "@storybook/router": "5.3.18",
+        "@storybook/router": "5.3.19",
         "core-js": "^3.0.1",
         "global": "^4.3.2",
         "prop-types": "^15.7.2",
@@ -1929,26 +2157,26 @@
       },
       "dependencies": {
         "qs": {
-          "version": "6.9.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-          "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
+          "version": "6.9.4",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+          "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
           "dev": true
         }
       }
     },
     "@storybook/addon-notes": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/addon-notes/-/addon-notes-5.3.18.tgz",
-      "integrity": "sha512-P8d5P6+MErodRz2whP1f33ovhGMcOc/g4a+8qatiUotsPbg/2LKNRlY1QSfHWtm26NIGsgOTqSb0z1q6cyMNvQ==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/addon-notes/-/addon-notes-5.3.19.tgz",
+      "integrity": "sha512-9dkUY5bPO/nux6zIXtE4h27AXgqz1Pogrbg7x0BwYWFdoMh7A8AWcnREfkjiPtrB/XGInlNRPqkU0KKk6tMi/w==",
       "dev": true,
       "requires": {
-        "@storybook/addons": "5.3.18",
-        "@storybook/api": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/components": "5.3.18",
-        "@storybook/core-events": "5.3.18",
-        "@storybook/router": "5.3.18",
-        "@storybook/theming": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/api": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/components": "5.3.19",
+        "@storybook/core-events": "5.3.19",
+        "@storybook/router": "5.3.19",
+        "@storybook/theming": "5.3.19",
         "core-js": "^3.0.1",
         "global": "^4.3.2",
         "markdown-to-jsx": "^6.10.3",
@@ -1958,29 +2186,29 @@
       }
     },
     "@storybook/addons": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.18.tgz",
-      "integrity": "sha512-ZQjDgTUDFRLvAiBg2d8FgPgghfQ+9uFyXQbtiGlTBLinrPCeQd7J86qiUES0fcGoohCCw0wWKtvB0WF2z1XNDg==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.3.19.tgz",
+      "integrity": "sha512-Ky/k22p6i6FVNvs1VhuFyGvYJdcp+FgXqFgnPyY/OXJW/vPDapdElpTpHJZLFI9I2FQBDcygBPU5RXkumQ+KUQ==",
       "dev": true,
       "requires": {
-        "@storybook/api": "5.3.18",
-        "@storybook/channels": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/core-events": "5.3.18",
+        "@storybook/api": "5.3.19",
+        "@storybook/channels": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/core-events": "5.3.19",
         "core-js": "^3.0.1",
         "global": "^4.3.2",
         "util-deprecate": "^1.0.2"
       }
     },
     "@storybook/angular": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-5.3.18.tgz",
-      "integrity": "sha512-vp1K9Rt7Zz/QuQTvAF+mDUMrtrb1peMw/xK0DNQGdYv8hfDtOkqFPdQK6rFlpO53oen9XAVMr6AE5778XoluoA==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-5.3.19.tgz",
+      "integrity": "sha512-ZRb/Gn/pWoZnIMSs4bxAdBiKzdcMJnkgkWiNS3TDerrgcNQbQzEgaPDSe2y3C7CAPmIEMSnBnT/o45rJIP6ZkQ==",
       "dev": true,
       "requires": {
-        "@storybook/addons": "5.3.18",
-        "@storybook/core": "5.3.18",
-        "@storybook/node-logger": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/core": "5.3.19",
+        "@storybook/node-logger": "5.3.19",
         "@types/webpack-env": "^1.15.0",
         "core-js": "^3.0.1",
         "fork-ts-checker-webpack-plugin": "^3.0.1",
@@ -1993,18 +2221,18 @@
       }
     },
     "@storybook/api": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.18.tgz",
-      "integrity": "sha512-QXaccNCARHzPWOuxYndiebGWBZmwiUvRgB9ji0XTJBS3y8K0ZPb5QyuqiKPaEWUj8dBA8rzdDtkW3Yt95Namaw==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.3.19.tgz",
+      "integrity": "sha512-U/VzDvhNCPmw2igvJYNNM+uwJCL+3teiL6JmuoL4/cmcqhI6IqqG9dZmMP1egoCd19wXEP7rnAfB/VcYVg41dQ==",
       "dev": true,
       "requires": {
         "@reach/router": "^1.2.1",
-        "@storybook/channels": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/core-events": "5.3.18",
+        "@storybook/channels": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/core-events": "5.3.19",
         "@storybook/csf": "0.0.1",
-        "@storybook/router": "5.3.18",
-        "@storybook/theming": "5.3.18",
+        "@storybook/router": "5.3.19",
+        "@storybook/theming": "5.3.19",
         "@types/reach__router": "^1.2.3",
         "core-js": "^3.0.1",
         "fast-deep-equal": "^2.0.1",
@@ -2035,38 +2263,38 @@
       }
     },
     "@storybook/channel-postmessage": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.18.tgz",
-      "integrity": "sha512-awxBW/aVfNtY9QvYZgsPaMXgUpC2+W3vEyQcl/w4ce0YVH+7yWx3wt3Ku49lQwxZwDrxP3QoC0U+mkPc9hBJwA==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.3.19.tgz",
+      "integrity": "sha512-Iq0f4NPHR0UVVFCWt0cI7Myadk4/SATXYJPT6sv95KhnLjKEeYw571WBlThfp8a9FM80887xG+eIRe93c8dleA==",
       "dev": true,
       "requires": {
-        "@storybook/channels": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
+        "@storybook/channels": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
         "core-js": "^3.0.1",
         "global": "^4.3.2",
         "telejson": "^3.2.0"
       }
     },
     "@storybook/channels": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.18.tgz",
-      "integrity": "sha512-scP/6td/BJSEOgfN+qaYGDf3E793xye7tIw6W+sYqwg+xdMFO39wVXgVZNpQL6sLEwpJZTaPywCjC6p6ksErqQ==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.3.19.tgz",
+      "integrity": "sha512-38seaeyshRGotTEZJppyYMg/Vx2zRKgFv1L6uGqkJT0LYoNSYtJhsiNFCJ2/KUJu2chAJ/j8h80bpVBVLQ/+WA==",
       "dev": true,
       "requires": {
         "core-js": "^3.0.1"
       }
     },
     "@storybook/client-api": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.18.tgz",
-      "integrity": "sha512-QiXTDUpjdyW19BlocLw07DrkOnEzVaWGJcRze2nSs29IKKuq1Ncv2LOAZt6ySSq0PmIKsjBou3bmS1/aXmDMdw==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.3.19.tgz",
+      "integrity": "sha512-Dh8ZLrLH91j9Fa28Gmp0KFUvvgK348aNMrDNAUdj4m4witz/BWQ2pxz6qq9/xFVErk/GanVC05kazGElqgYCRQ==",
       "dev": true,
       "requires": {
-        "@storybook/addons": "5.3.18",
-        "@storybook/channel-postmessage": "5.3.18",
-        "@storybook/channels": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/core-events": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/channel-postmessage": "5.3.19",
+        "@storybook/channels": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/core-events": "5.3.19",
         "@storybook/csf": "0.0.1",
         "@types/webpack-env": "^1.15.0",
         "core-js": "^3.0.1",
@@ -2082,51 +2310,42 @@
       },
       "dependencies": {
         "is-plain-object": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
-          "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
-          "dev": true,
-          "requires": {
-            "isobject": "^4.0.0"
-          }
-        },
-        "isobject": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
-          "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==",
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
+          "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
           "dev": true
         },
         "qs": {
-          "version": "6.9.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-          "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
+          "version": "6.9.4",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+          "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
           "dev": true
         }
       }
     },
     "@storybook/client-logger": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.18.tgz",
-      "integrity": "sha512-RZjxw4uqZX3Yk27IirbB/pQG+wRsQSSRlKqYa8KQ5bSanm4IrcV9VA1OQbuySW9njE+CexAnakQJ/fENdmurNg==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.3.19.tgz",
+      "integrity": "sha512-nHftT9Ow71YgAd2/tsu79kwKk30mPuE0sGRRUHZVyCRciGFQweKNOS/6xi2Aq+WwBNNjPKNlbgxwRt1yKe1Vkg==",
       "dev": true,
       "requires": {
         "core-js": "^3.0.1"
       }
     },
     "@storybook/components": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.18.tgz",
-      "integrity": "sha512-LIN4aVCCDY7klOwtuqQhfYz4tHaMADhXEzZpij+3r8N68Inck6IJ1oo9A9umXQPsTioQi8e6FLobH1im90j/2A==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.3.19.tgz",
+      "integrity": "sha512-3g23/+ktlocaHLJKISu9Neu3XKa6aYP2ctDYkRtGchSB0Q55hQsUVGO+BEVuT7Pk2D59mVCxboBjxcRoPUY4pw==",
       "dev": true,
       "requires": {
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/theming": "5.3.18",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/theming": "5.3.19",
         "@types/react-syntax-highlighter": "11.0.4",
         "@types/react-textarea-autosize": "^4.3.3",
         "core-js": "^3.0.1",
         "global": "^4.3.2",
         "lodash": "^4.17.15",
-        "markdown-to-jsx": "^6.9.1",
+        "markdown-to-jsx": "^6.11.4",
         "memoizerific": "^1.11.3",
         "polished": "^3.3.1",
         "popper.js": "^1.14.7",
@@ -2143,9 +2362,9 @@
       }
     },
     "@storybook/core": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.18.tgz",
-      "integrity": "sha512-XQb/UQb+Ohuaw0GhKKYzvmuuh5Tit93f2cLZD9QCSWUPvDGmLG5g91Y9NbUr4Ap3mANT3NksMNhkAV0GxExEkg==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.3.19.tgz",
+      "integrity": "sha512-4EYzglqb1iD6x9gxtAYpRGwGP6qJGiU2UW4GiYrErEmeu6y6tkyaqW5AwGlIo9+6jAfwD0HjaK8afvjKTtmmMQ==",
       "dev": true,
       "requires": {
         "@babel/plugin-proposal-class-properties": "^7.7.0",
@@ -2153,16 +2372,16 @@
         "@babel/plugin-syntax-dynamic-import": "^7.2.0",
         "@babel/plugin-transform-react-constant-elements": "^7.2.0",
         "@babel/preset-env": "^7.4.5",
-        "@storybook/addons": "5.3.18",
-        "@storybook/channel-postmessage": "5.3.18",
-        "@storybook/client-api": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/core-events": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/channel-postmessage": "5.3.19",
+        "@storybook/client-api": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/core-events": "5.3.19",
         "@storybook/csf": "0.0.1",
-        "@storybook/node-logger": "5.3.18",
-        "@storybook/router": "5.3.18",
-        "@storybook/theming": "5.3.18",
-        "@storybook/ui": "5.3.18",
+        "@storybook/node-logger": "5.3.19",
+        "@storybook/router": "5.3.19",
+        "@storybook/theming": "5.3.19",
+        "@storybook/ui": "5.3.19",
         "airbnb-js-shims": "^2.2.1",
         "ansi-to-html": "^0.6.11",
         "autoprefixer": "^9.7.2",
@@ -2223,81 +2442,45 @@
         "webpack-virtual-modules": "^0.2.0"
       },
       "dependencies": {
-        "ansi-styles": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
-          "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
-          "dev": true,
-          "requires": {
-            "@types/color-name": "^1.1.1",
-            "color-convert": "^2.0.1"
-          }
-        },
         "autoprefixer": {
-          "version": "9.7.5",
-          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.5.tgz",
-          "integrity": "sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==",
+          "version": "9.8.6",
+          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
+          "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
           "dev": true,
           "requires": {
-            "browserslist": "^4.11.0",
-            "caniuse-lite": "^1.0.30001036",
-            "chalk": "^2.4.2",
+            "browserslist": "^4.12.0",
+            "caniuse-lite": "^1.0.30001109",
+            "colorette": "^1.2.1",
             "normalize-range": "^0.1.2",
             "num2fraction": "^1.2.2",
-            "postcss": "^7.0.27",
-            "postcss-value-parser": "^4.0.3"
-          },
-          "dependencies": {
-            "ansi-styles": {
-              "version": "3.2.1",
-              "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-              "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-              "dev": true,
-              "requires": {
-                "color-convert": "^1.9.0"
-              }
-            },
-            "chalk": {
-              "version": "2.4.2",
-              "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-              "dev": true,
-              "requires": {
-                "ansi-styles": "^3.2.1",
-                "escape-string-regexp": "^1.0.5",
-                "supports-color": "^5.3.0"
-              }
-            },
-            "color-convert": {
-              "version": "1.9.3",
-              "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-              "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-              "dev": true,
-              "requires": {
-                "color-name": "1.1.3"
-              }
-            },
-            "color-name": {
-              "version": "1.1.3",
-              "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-              "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-              "dev": true
-            },
-            "has-flag": {
-              "version": "3.0.0",
-              "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-              "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-              "dev": true
-            },
-            "supports-color": {
-              "version": "5.5.0",
-              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-              "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-              "dev": true,
-              "requires": {
-                "has-flag": "^3.0.0"
-              }
-            }
+            "postcss": "^7.0.32",
+            "postcss-value-parser": "^4.1.0"
+          }
+        },
+        "cacache": {
+          "version": "13.0.1",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
+          "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==",
+          "dev": true,
+          "requires": {
+            "chownr": "^1.1.2",
+            "figgy-pudding": "^3.5.1",
+            "fs-minipass": "^2.0.0",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.2.2",
+            "infer-owner": "^1.0.4",
+            "lru-cache": "^5.1.1",
+            "minipass": "^3.0.0",
+            "minipass-collect": "^1.0.2",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.2",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "p-map": "^3.0.0",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.7.1",
+            "ssri": "^7.0.0",
+            "unique-filename": "^1.1.1"
           }
         },
         "chalk": {
@@ -2308,6 +2491,33 @@
           "requires": {
             "ansi-styles": "^4.1.0",
             "supports-color": "^7.1.0"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "4.2.1",
+              "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+              "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+              "dev": true,
+              "requires": {
+                "@types/color-name": "^1.1.1",
+                "color-convert": "^2.0.1"
+              }
+            },
+            "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
+            },
+            "supports-color": {
+              "version": "7.1.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+              "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+              "dev": true,
+              "requires": {
+                "has-flag": "^4.0.0"
+              }
+            }
           }
         },
         "color-convert": {
@@ -2362,11 +2572,32 @@
             "universalify": "^0.1.0"
           }
         },
-        "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
+        "jest-worker": {
+          "version": "25.5.0",
+          "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz",
+          "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==",
+          "dev": true,
+          "requires": {
+            "merge-stream": "^2.0.0",
+            "supports-color": "^7.0.0"
+          },
+          "dependencies": {
+            "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
+            },
+            "supports-color": {
+              "version": "7.1.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+              "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+              "dev": true,
+              "requires": {
+                "has-flag": "^4.0.0"
+              }
+            }
+          }
         },
         "loader-utils": {
           "version": "1.4.0",
@@ -2399,25 +2630,6 @@
             "p-locate": "^4.1.0"
           }
         },
-        "micromatch": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-          "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
-          "dev": true,
-          "requires": {
-            "braces": "^3.0.1",
-            "picomatch": "^2.0.5"
-          }
-        },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
         "p-locate": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
@@ -2427,22 +2639,51 @@
             "p-limit": "^2.2.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
         "path-exists": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
           "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
           "dev": true
         },
+        "postcss": {
+          "version": "7.0.32",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+          "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "dev": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "supports-color": {
+                  "version": "5.5.0",
+                  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+                  "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+                  "dev": true,
+                  "requires": {
+                    "has-flag": "^3.0.0"
+                  }
+                }
+              }
+            }
+          }
+        },
         "qs": {
-          "version": "6.9.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-          "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
+          "version": "6.9.4",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+          "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
           "dev": true
         },
         "raw-loader": {
@@ -2461,27 +2702,97 @@
           "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
           "dev": true
         },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
         "semver": {
           "version": "6.3.0",
           "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
           "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         },
-        "supports-color": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
-          "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+        "serialize-javascript": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
+          "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
           "dev": true,
           "requires": {
-            "has-flag": "^4.0.0"
+            "randombytes": "^2.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "ssri": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz",
+          "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==",
+          "dev": true,
+          "requires": {
+            "figgy-pudding": "^3.5.1",
+            "minipass": "^3.1.1"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "dev": true,
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          },
+          "dependencies": {
+            "commander": {
+              "version": "2.20.3",
+              "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+              "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+              "dev": true
+            }
+          }
+        },
+        "terser-webpack-plugin": {
+          "version": "2.3.7",
+          "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz",
+          "integrity": "sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg==",
+          "dev": true,
+          "requires": {
+            "cacache": "^13.0.1",
+            "find-cache-dir": "^3.3.1",
+            "jest-worker": "^25.4.0",
+            "p-limit": "^2.3.0",
+            "schema-utils": "^2.6.6",
+            "serialize-javascript": "^3.1.0",
+            "source-map": "^0.6.1",
+            "terser": "^4.6.12",
+            "webpack-sources": "^1.4.3"
           }
         }
       }
     },
     "@storybook/core-events": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.18.tgz",
-      "integrity": "sha512-uQ6NYJ5WODXK8DJ7m8y3yUAtWB3n+6XtYztjY+tdkCsLYvTYDXNS+epV+f5Hu9+gB+/Dm+b5Su4jDD+LZB2QWA==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.3.19.tgz",
+      "integrity": "sha512-lh78ySqMS7pDdMJAQAe35d1I/I4yPTqp09Cq0YIYOxx9BQZhah4DZTV1QIZt22H5p2lPb5MWLkWSxBaexZnz8A==",
       "dev": true,
       "requires": {
         "core-js": "^3.0.1"
@@ -2497,9 +2808,9 @@
       }
     },
     "@storybook/node-logger": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.18.tgz",
-      "integrity": "sha512-Go/hdtaPTtjgJP+GYk8VXcOmecrdG7cXm0yyTlatd6s8xXI0txHme1/0MOZmEPows1Ec7KAQ20+NnaCGUPZUUg==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.3.19.tgz",
+      "integrity": "sha512-hKshig/u5Nj9fWy0OsyU04yqCxr0A9pydOHIassr4fpLAaePIN2YvqCqE2V+TxQHjZUnowSSIhbXrGt0DI5q2A==",
       "dev": true,
       "requires": {
         "@types/npmlog": "^4.1.2",
@@ -2563,9 +2874,9 @@
       }
     },
     "@storybook/router": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.18.tgz",
-      "integrity": "sha512-6B2U2C75KTSVaCuYYgcubeJGcCSnwsXuEf50hEd5mGqWgHZfojCtGvB7Ko4X+0h8rEC+eNA4p7YBOhlUv9WNrQ==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.3.19.tgz",
+      "integrity": "sha512-yNClpuP7BXQlBTRf6Ggle3/R349/k6kvI5Aim4jf6X/2cFVg2pzBXDAF41imNm9PcvdxwabQLm6I48p7OvKr/w==",
       "dev": true,
       "requires": {
         "@reach/router": "^1.2.1",
@@ -2580,22 +2891,22 @@
       },
       "dependencies": {
         "qs": {
-          "version": "6.9.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-          "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
+          "version": "6.9.4",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+          "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
           "dev": true
         }
       }
     },
     "@storybook/theming": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.18.tgz",
-      "integrity": "sha512-lfFTeLoYwLMKg96N3gn0umghMdAHgJBGuk2OM8Ll84yWtdl9RGnzfiI1Fl7Cr5k95dCF7drLJlJCao1VxUkFSA==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.3.19.tgz",
+      "integrity": "sha512-ecG+Rq3hc1GOzKHamYnD4wZ0PEP9nNg0mXbC3RhbxfHj+pMMCWWmx9B2Uu75SL1PTT8WcfkFO0hU/0IO84Pzlg==",
       "dev": true,
       "requires": {
         "@emotion/core": "^10.0.20",
         "@emotion/styled": "^10.0.17",
-        "@storybook/client-logger": "5.3.18",
+        "@storybook/client-logger": "5.3.19",
         "core-js": "^3.0.1",
         "deep-object-diff": "^1.1.0",
         "emotion-theming": "^10.0.19",
@@ -2616,20 +2927,20 @@
       }
     },
     "@storybook/ui": {
-      "version": "5.3.18",
-      "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.18.tgz",
-      "integrity": "sha512-xyXK53fNe9lkGPmXf3Nk+n0gz9gOgXI+fDxetyDLpX79k3DIN/jCKEnv45vXof7OQ45mTmyBvUNTKrNLqKTt5Q==",
+      "version": "5.3.19",
+      "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.3.19.tgz",
+      "integrity": "sha512-r0VxdWab49nm5tzwvveVDnsHIZHMR76veYOu/NHKDUZ5hnQl1LMG1YyMCFFa7KiwD/OrZxRWr6/Ma7ep9kR4Gw==",
       "dev": true,
       "requires": {
         "@emotion/core": "^10.0.20",
-        "@storybook/addons": "5.3.18",
-        "@storybook/api": "5.3.18",
-        "@storybook/channels": "5.3.18",
-        "@storybook/client-logger": "5.3.18",
-        "@storybook/components": "5.3.18",
-        "@storybook/core-events": "5.3.18",
-        "@storybook/router": "5.3.18",
-        "@storybook/theming": "5.3.18",
+        "@storybook/addons": "5.3.19",
+        "@storybook/api": "5.3.19",
+        "@storybook/channels": "5.3.19",
+        "@storybook/client-logger": "5.3.19",
+        "@storybook/components": "5.3.19",
+        "@storybook/core-events": "5.3.19",
+        "@storybook/router": "5.3.19",
+        "@storybook/theming": "5.3.19",
         "copy-to-clipboard": "^3.0.8",
         "core-js": "^3.0.1",
         "core-js-pure": "^3.0.1",
@@ -2638,7 +2949,7 @@
         "fuse.js": "^3.4.6",
         "global": "^4.3.2",
         "lodash": "^4.17.15",
-        "markdown-to-jsx": "^6.9.3",
+        "markdown-to-jsx": "^6.11.4",
         "memoizerific": "^1.11.3",
         "polished": "^3.3.1",
         "prop-types": "^15.7.2",
@@ -2664,9 +2975,9 @@
           "dev": true
         },
         "qs": {
-          "version": "6.9.3",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
-          "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
+          "version": "6.9.4",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+          "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==",
           "dev": true
         },
         "resolve-from": {
@@ -2683,11 +2994,24 @@
         }
       }
     },
-    "@tootallnate/once": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz",
-      "integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==",
-      "dev": true
+    "@stylelint/postcss-css-in-js": {
+      "version": "0.37.2",
+      "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz",
+      "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==",
+      "dev": true,
+      "requires": {
+        "@babel/core": ">=7.9.0"
+      }
+    },
+    "@stylelint/postcss-markdown": {
+      "version": "0.36.1",
+      "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz",
+      "integrity": "sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==",
+      "dev": true,
+      "requires": {
+        "remark": "^12.0.0",
+        "unist-util-find-all-after": "^3.0.1"
+      }
     },
     "@types/anymatch": {
       "version": "1.3.1",
@@ -2701,33 +3025,32 @@
       "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
       "dev": true
     },
-    "@types/events": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
-      "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
+    "@types/geojson": {
+      "version": "7946.0.7",
+      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz",
+      "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==",
       "dev": true
     },
     "@types/glob": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
-      "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
+      "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
       "dev": true,
       "requires": {
-        "@types/events": "*",
         "@types/minimatch": "*",
         "@types/node": "*"
       }
     },
     "@types/history": {
-      "version": "4.7.5",
-      "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.5.tgz",
-      "integrity": "sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw==",
+      "version": "4.7.7",
+      "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.7.tgz",
+      "integrity": "sha512-2xtoL22/3Mv6a70i4+4RB7VgbDDORoWwjcqeNysojZA0R7NK17RbY5Gof/2QiFfJgX+KkWghbwJ+d/2SB8Ndzg==",
       "dev": true
     },
     "@types/html-minifier-terser": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.0.0.tgz",
-      "integrity": "sha512-q95SP4FdkmF0CwO0F2q0H6ZgudsApaY/yCtAQNRn1gduef5fGpyEphzy0YCq/N0UFvDSnLg5V8jFK/YGXlDiCw==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz",
+      "integrity": "sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA==",
       "dev": true
     },
     "@types/is-function": {
@@ -2737,9 +3060,9 @@
       "dev": true
     },
     "@types/jasmine": {
-      "version": "3.5.10",
-      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.10.tgz",
-      "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==",
+      "version": "3.5.12",
+      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.12.tgz",
+      "integrity": "sha512-vJaQ58oceFao+NzpKNqLOWwHPsqA7YEhKv+mOXvYU4/qh+BfVWIxaBtL0Ck5iCS67yOkNwGkDCrzepnzIWF+7g==",
       "dev": true
     },
     "@types/jasminewd2": {
@@ -2751,6 +3074,12 @@
         "@types/jasmine": "*"
       }
     },
+    "@types/json-schema": {
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
+      "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==",
+      "dev": true
+    },
     "@types/json5": {
       "version": "0.0.29",
       "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -2766,6 +3095,15 @@
         "@types/node": "*"
       }
     },
+    "@types/leaflet": {
+      "version": "1.5.17",
+      "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.17.tgz",
+      "integrity": "sha512-2XYq9k6kNjhNI7PaTz8Rdxcc8Vzwu97OaS9CtcrTxnTSxFUGwjlGjTDvhTLJU+JRSfZ4lBwGcl0SjZHALdVr6g==",
+      "dev": true,
+      "requires": {
+        "@types/geojson": "*"
+      }
+    },
     "@types/minimatch": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@@ -2779,9 +3117,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "12.12.34",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.34.tgz",
-      "integrity": "sha512-BneGN0J9ke24lBRn44hVHNeDlrXRYF+VRp0HbSUNnEZahXGAysHZIqnf/hER6aabdBgzM4YOV4jrR8gj4Zfi0g==",
+      "version": "12.12.54",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz",
+      "integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==",
       "dev": true
     },
     "@types/normalize-package-data": {
@@ -2815,15 +3153,15 @@
       "dev": true
     },
     "@types/q": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
-      "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
+      "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
       "dev": true
     },
     "@types/reach__router": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.3.tgz",
-      "integrity": "sha512-HTHMGJLdH3czgPP1nHF82y+TYLV1KSh1qYeezqHNDNuESBy55ij1LCn8jDYFeKCuAxm0gd9J25zyYy7mhOcgOw==",
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.5.tgz",
+      "integrity": "sha512-h0NbqXN/tJuBY/xggZSej1SKQEstbHO7J/omt1tYoFGmj3YXOodZKbbqD4mNDh7zvEGYd7YFrac1LTtAr3xsYQ==",
       "dev": true,
       "requires": {
         "@types/history": "*",
@@ -2831,22 +3169,23 @@
       }
     },
     "@types/react": {
-      "version": "16.9.31",
-      "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.31.tgz",
-      "integrity": "sha512-NpYJpNMWScFXtx3A2BJMeew2G3+9SEslVWMdxNJ6DLvxIuxWjY1bizK9q5Y1ujhln31vtjmhjOAYDr9Xx3k9FQ==",
+      "version": "16.9.44",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.44.tgz",
+      "integrity": "sha512-BtLoJrXdW8DVZauKP+bY4Kmiq7ubcJq+H/aCpRfvPF7RAT3RwR73Sg8szdc2YasbAlWBDrQ6Q+AFM0KwtQY+WQ==",
       "dev": true,
       "requires": {
         "@types/prop-types": "*",
-        "csstype": "^2.2.0"
+        "csstype": "^3.0.2"
       }
     },
     "@types/react-color": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.1.tgz",
-      "integrity": "sha512-J6mYm43Sid9y+OjZ7NDfJ2VVkeeuTPNVImNFITgQNXodHteKfl/t/5pAR5Z9buodZ2tCctsZjgiMlQOpfntakw==",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.4.tgz",
+      "integrity": "sha512-EswbYJDF1kkrx93/YU+BbBtb46CCtDMvTiGmcOa/c5PETnwTiSWoseJ1oSWeRl/4rUXkhME9bVURvvPg0W5YQw==",
       "dev": true,
       "requires": {
-        "@types/react": "*"
+        "@types/react": "*",
+        "@types/reactcss": "*"
       }
     },
     "@types/react-syntax-highlighter": {
@@ -2867,6 +3206,15 @@
         "@types/react": "*"
       }
     },
+    "@types/reactcss": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.3.tgz",
+      "integrity": "sha512-d2gQQ0IL6hXLnoRfVYZukQNWHuVsE75DzFTLPUuyyEhJS8G2VvlE+qfQQ91SJjaMqlURRCNIsX7Jcsw6cEuJlA==",
+      "dev": true,
+      "requires": {
+        "@types/react": "*"
+      }
+    },
     "@types/selenium-webdriver": {
       "version": "3.0.17",
       "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz",
@@ -2880,15 +3228,15 @@
       "dev": true
     },
     "@types/tapable": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.5.tgz",
-      "integrity": "sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ==",
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
+      "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==",
       "dev": true
     },
     "@types/uglify-js": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.5.tgz",
-      "integrity": "sha512-L7EbSkhSaWBpkl+PZAEAqZTqtTeIsq7s/oX/q0LNnxxJoRVKQE0T81XDVyaxjiiKQwiV2vhVeYRqxdRNqGOGJw==",
+      "version": "3.9.3",
+      "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.3.tgz",
+      "integrity": "sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w==",
       "dev": true,
       "requires": {
         "source-map": "^0.6.1"
@@ -2908,30 +3256,10 @@
       "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==",
       "dev": true
     },
-    "@types/vfile": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz",
-      "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*",
-        "@types/unist": "*",
-        "@types/vfile-message": "*"
-      }
-    },
-    "@types/vfile-message": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz",
-      "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==",
-      "dev": true,
-      "requires": {
-        "vfile-message": "*"
-      }
-    },
     "@types/webpack": {
-      "version": "4.41.10",
-      "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.10.tgz",
-      "integrity": "sha512-vIy0qaq8AjOjZLuFPqpo7nAJzcoVXMdw3mvpNN07Uvdy0p1IpJeLNBe3obdRP7FX2jIusDE7z1pZa0A6qYUgnA==",
+      "version": "4.41.21",
+      "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.21.tgz",
+      "integrity": "sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA==",
       "dev": true,
       "requires": {
         "@types/anymatch": "*",
@@ -2951,15 +3279,15 @@
       }
     },
     "@types/webpack-env": {
-      "version": "1.15.1",
-      "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.1.tgz",
-      "integrity": "sha512-eWN5ElDTeBc5lRDh95SqA8x18D0ll2pWudU3uWiyfsRmIZcmUXpEsxPU+7+BsdCrO2vfLRC629u/MmjbmF+2tA==",
+      "version": "1.15.2",
+      "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.2.tgz",
+      "integrity": "sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ==",
       "dev": true
     },
     "@types/webpack-sources": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz",
-      "integrity": "sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw==",
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz",
+      "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==",
       "dev": true,
       "requires": {
         "@types/node": "*",
@@ -3179,6 +3507,16 @@
       "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
       "dev": true
     },
+    "JSONStream": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+      "dev": true,
+      "requires": {
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
+      }
+    },
     "abbrev": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -3202,9 +3540,9 @@
       "dev": true
     },
     "acorn-walk": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz",
-      "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
       "dev": true
     },
     "address": {
@@ -3214,9 +3552,9 @@
       "dev": true
     },
     "adm-zip": {
-      "version": "0.4.14",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz",
-      "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==",
+      "version": "0.4.16",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
+      "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
       "dev": true
     },
     "after": {
@@ -3226,22 +3564,20 @@
       "dev": true
     },
     "agent-base": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
-      "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+      "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
       "dev": true,
       "requires": {
-        "debug": "4"
+        "es6-promisify": "^5.0.0"
       }
     },
     "agentkeepalive": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.0.tgz",
-      "integrity": "sha512-CW/n1wxF8RpEuuiq6Vbn9S8m0VSYDMnZESqaJ6F2cWN9fY8rei2qaxweIaRgq+ek8TqfoFIsUjaGNKGGEHElSg==",
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
+      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
       "dev": true,
       "requires": {
-        "debug": "^4.1.0",
-        "depd": "^1.1.2",
         "humanize-ms": "^1.2.1"
       }
     },
@@ -3281,9 +3617,9 @@
       }
     },
     "ajv": {
-      "version": "6.12.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
-      "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
+      "version": "6.12.3",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+      "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
       "dev": true,
       "requires": {
         "fast-deep-equal": "^3.1.1",
@@ -3299,9 +3635,9 @@
       "dev": true
     },
     "ajv-keywords": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
-      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
       "dev": true
     },
     "alphanum-sort": {
@@ -3317,40 +3653,6 @@
       "dev": true,
       "requires": {
         "string-width": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
       }
     },
     "ansi-colors": {
@@ -3428,15 +3730,6 @@
       "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==",
       "dev": true
     },
-    "append-transform": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
-      "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
-      "dev": true,
-      "requires": {
-        "default-require-extensions": "^2.0.0"
-      }
-    },
     "aproba": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
@@ -3520,13 +3813,10 @@
       }
     },
     "array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "dev": true,
-      "requires": {
-        "array-uniq": "^1.0.1"
-      }
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true
     },
     "array-uniq": {
       "version": "1.0.3",
@@ -3609,6 +3899,14 @@
         "bn.js": "^4.0.0",
         "inherits": "^2.0.1",
         "minimalistic-assert": "^1.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "assert": {
@@ -3751,9 +4049,9 @@
       "dev": true
     },
     "aws4": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
-      "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
+      "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
       "dev": true
     },
     "axobject-query": {
@@ -3904,18 +4202,18 @@
       "dev": true
     },
     "babel-plugin-dynamic-import-node": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
-      "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
       "dev": true,
       "requires": {
         "object.assign": "^4.1.0"
       }
     },
     "babel-plugin-emotion": {
-      "version": "10.0.29",
-      "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.29.tgz",
-      "integrity": "sha512-7Jpi1OCxjyz0k163lKtqP+LHMg5z3S6A7vMBfHnF06l2unmtsOmFDzZBpGf0CWo1G4m8UACfVcDJiSiRuu/cSw==",
+      "version": "10.0.33",
+      "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz",
+      "integrity": "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==",
       "dev": true,
       "requires": {
         "@babel/helper-module-imports": "^7.0.0",
@@ -3973,9 +4271,9 @@
           }
         },
         "parse-json": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
-          "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
+          "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.0.0",
@@ -3984,12 +4282,6 @@
             "lines-and-columns": "^1.1.6"
           }
         },
-        "path-type": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-          "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-          "dev": true
-        },
         "resolve-from": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -4287,9 +4579,9 @@
       "dev": true
     },
     "base64id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
-      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+      "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
       "dev": true
     },
     "batch": {
@@ -4341,9 +4633,9 @@
       "dev": true
     },
     "binary-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
-      "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
       "dev": true
     },
     "bindings": {
@@ -4412,9 +4704,9 @@
       "dev": true
     },
     "bn.js": {
-      "version": "4.11.8",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
-      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
+      "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==",
       "dev": true
     },
     "body-parser": {
@@ -4541,6 +4833,12 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
         "has-flag": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4687,21 +4985,50 @@
       "requires": {
         "bn.js": "^4.1.0",
         "randombytes": "^2.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "browserify-sign": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
-      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
+      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
       "dev": true,
       "requires": {
-        "bn.js": "^4.1.1",
-        "browserify-rsa": "^4.0.0",
-        "create-hash": "^1.1.0",
-        "create-hmac": "^1.1.2",
-        "elliptic": "^6.0.0",
-        "inherits": "^2.0.1",
-        "parse-asn1": "^5.0.0"
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
       }
     },
     "browserify-zlib": {
@@ -4714,54 +5041,24 @@
       }
     },
     "browserslist": {
-      "version": "4.11.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz",
-      "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==",
+      "version": "4.13.0",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz",
+      "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==",
       "dev": true,
       "requires": {
-        "caniuse-lite": "^1.0.30001038",
-        "electron-to-chromium": "^1.3.390",
-        "node-releases": "^1.1.53",
-        "pkg-up": "^2.0.0"
+        "caniuse-lite": "^1.0.30001093",
+        "electron-to-chromium": "^1.3.488",
+        "escalade": "^3.0.1",
+        "node-releases": "^1.1.58"
       }
     },
     "browserstack": {
-      "version": "1.5.3",
-      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz",
-      "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz",
+      "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==",
       "dev": true,
       "requires": {
         "https-proxy-agent": "^2.2.1"
-      },
-      "dependencies": {
-        "agent-base": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
-          "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-          "dev": true,
-          "requires": {
-            "es6-promisify": "^5.0.0"
-          }
-        },
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
-          "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
-          "dev": true,
-          "requires": {
-            "agent-base": "^4.3.0",
-            "debug": "^3.1.0"
-          }
-        }
       }
     },
     "buffer": {
@@ -4775,34 +5072,12 @@
         "isarray": "^1.0.0"
       }
     },
-    "buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "dev": true,
-      "requires": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
-      "dev": true
-    },
     "buffer-crc32": {
       "version": "0.2.13",
       "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
       "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
       "dev": true
     },
-    "buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
-      "dev": true
-    },
     "buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -4871,9 +5146,9 @@
       },
       "dependencies": {
         "mkdirp": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz",
-          "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==",
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
           "dev": true
         },
         "rimraf": {
@@ -4986,9 +5261,9 @@
       }
     },
     "caniuse-lite": {
-      "version": "1.0.30001038",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz",
-      "integrity": "sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ==",
+      "version": "1.0.30001111",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz",
+      "integrity": "sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg==",
       "dev": true
     },
     "canonical-path": {
@@ -5063,9 +5338,9 @@
       "dev": true
     },
     "chokidar": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
-      "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
+      "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
       "dev": true,
       "requires": {
         "anymatch": "~3.1.1",
@@ -5075,18 +5350,7 @@
         "is-binary-path": "~2.1.0",
         "is-glob": "~4.0.1",
         "normalize-path": "~3.0.0",
-        "readdirp": "~3.3.0"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
-          "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        }
+        "readdirp": "~3.4.0"
       }
     },
     "chownr": {
@@ -5194,9 +5458,9 @@
       }
     },
     "cli-spinners": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
-      "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz",
+      "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==",
       "dev": true
     },
     "cli-table3": {
@@ -5208,12 +5472,39 @@
         "colors": "^1.1.2",
         "object-assign": "^4.1.0",
         "string-width": "^2.1.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
       }
     },
     "cli-width": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+      "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
       "dev": true
     },
     "clipboard": {
@@ -5229,29 +5520,29 @@
       }
     },
     "cliui": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-      "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
       "dev": true,
       "requires": {
-        "string-width": "^2.1.1",
-        "strip-ansi": "^4.0.0",
-        "wrap-ansi": "^2.0.0"
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
           "dev": true
         },
         "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^3.0.0"
+            "ansi-regex": "^4.1.0"
           }
         }
       }
@@ -5381,10 +5672,16 @@
         "simple-swizzle": "^0.2.2"
       }
     },
+    "colorette": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
+      "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
+      "dev": true
+    },
     "colors": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
-      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
       "dev": true
     },
     "combined-stream": {
@@ -5632,121 +5929,86 @@
       }
     },
     "copy-webpack-plugin": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz",
-      "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz",
+      "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==",
       "dev": true,
       "requires": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
+        "cacache": "^15.0.4",
+        "fast-glob": "^3.2.4",
+        "find-cache-dir": "^3.3.1",
+        "glob-parent": "^5.1.1",
+        "globby": "^11.0.1",
+        "loader-utils": "^2.0.0",
         "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^2.1.2",
-        "webpack-log": "^2.0.0"
+        "p-limit": "^3.0.1",
+        "schema-utils": "^2.7.0",
+        "serialize-javascript": "^4.0.0",
+        "webpack-sources": "^1.4.3"
       },
       "dependencies": {
         "cacache": {
-          "version": "12.0.4",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+          "version": "15.0.5",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
+          "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
           "dev": true,
           "requires": {
-            "bluebird": "^3.5.5",
-            "chownr": "^1.1.1",
-            "figgy-pudding": "^3.5.1",
+            "@npmcli/move-file": "^1.0.1",
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
             "glob": "^7.1.4",
-            "graceful-fs": "^4.1.15",
-            "infer-owner": "^1.0.3",
-            "lru-cache": "^5.1.1",
-            "mississippi": "^3.0.0",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
+            "infer-owner": "^1.0.4",
+            "lru-cache": "^6.0.0",
+            "minipass": "^3.1.1",
+            "minipass-collect": "^1.0.2",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.2",
+            "mkdirp": "^1.0.3",
+            "p-map": "^4.0.0",
             "promise-inflight": "^1.0.1",
-            "rimraf": "^2.6.3",
-            "ssri": "^6.0.1",
-            "unique-filename": "^1.1.1",
-            "y18n": "^4.0.0"
+            "rimraf": "^3.0.2",
+            "ssri": "^8.0.0",
+            "tar": "^6.0.2",
+            "unique-filename": "^1.1.1"
           }
         },
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
+            "yallist": "^4.0.0"
           }
         },
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
-          }
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
         },
         "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz",
+          "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==",
           "dev": true,
           "requires": {
             "p-try": "^2.0.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+        "p-map": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+          "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "ssri": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
-          "dev": true,
-          "requires": {
-            "figgy-pudding": "^3.5.1"
+            "aggregate-error": "^3.0.0"
           }
         }
       }
@@ -5758,12 +6020,12 @@
       "dev": true
     },
     "core-js-compat": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
-      "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
+      "version": "3.6.5",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz",
+      "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.8.3",
+        "browserslist": "^4.8.5",
         "semver": "7.0.0"
       },
       "dependencies": {
@@ -5776,9 +6038,9 @@
       }
     },
     "core-js-pure": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz",
-      "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==",
+      "version": "3.6.5",
+      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz",
+      "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==",
       "dev": true
     },
     "core-util-is": {
@@ -5818,13 +6080,21 @@
       }
     },
     "create-ecdh": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
-      "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
       "dev": true,
       "requires": {
         "bn.js": "^4.1.0",
-        "elliptic": "^6.0.0"
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "create-hash": {
@@ -5941,9 +6211,9 @@
       }
     },
     "css-loader": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
-      "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.1.tgz",
+      "integrity": "sha512-0G4CbcZzQ9D1Q6ndOfjFuMDo8uLYMu5vc9Abs5ztyHcKvmil6GJrMiNjzzi3tQvUF+mVRuDg7bE6Oc0Prolgig==",
       "dev": true,
       "requires": {
         "camelcase": "^5.3.1",
@@ -5951,13 +6221,14 @@
         "icss-utils": "^4.1.1",
         "loader-utils": "^1.2.3",
         "normalize-path": "^3.0.0",
-        "postcss": "^7.0.23",
+        "postcss": "^7.0.27",
         "postcss-modules-extract-imports": "^2.0.0",
         "postcss-modules-local-by-default": "^3.0.2",
-        "postcss-modules-scope": "^2.1.1",
+        "postcss-modules-scope": "^2.2.0",
         "postcss-modules-values": "^3.0.0",
-        "postcss-value-parser": "^4.0.2",
-        "schema-utils": "^2.6.0"
+        "postcss-value-parser": "^4.0.3",
+        "schema-utils": "^2.6.5",
+        "semver": "^6.3.0"
       },
       "dependencies": {
         "json5": {
@@ -5979,6 +6250,12 @@
             "emojis-list": "^3.0.0",
             "json5": "^1.0.1"
           }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
         }
       }
     },
@@ -6010,14 +6287,13 @@
       "dev": true
     },
     "css-selector-tokenizer": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz",
-      "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==",
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
+      "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
       "dev": true,
       "requires": {
         "cssesc": "^3.0.0",
-        "fastparse": "^1.1.2",
-        "regexpu-core": "^4.6.0"
+        "fastparse": "^1.1.2"
       }
     },
     "css-tree": {
@@ -6039,9 +6315,9 @@
       }
     },
     "css-what": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
-      "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz",
+      "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==",
       "dev": true
     },
     "css.escape": {
@@ -6175,9 +6451,9 @@
       }
     },
     "csstype": {
-      "version": "2.6.10",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz",
-      "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.2.tgz",
+      "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==",
       "dev": true
     },
     "custom-event": {
@@ -6208,9 +6484,9 @@
       }
     },
     "date-format": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
-      "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
+      "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==",
       "dev": true
     },
     "debug": {
@@ -6288,15 +6564,6 @@
         "ip-regex": "^2.1.0"
       }
     },
-    "default-require-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
-      "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
-      "dev": true,
-      "requires": {
-        "strip-bom": "^3.0.0"
-      }
-    },
     "defaults": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
@@ -6379,6 +6646,15 @@
         "rimraf": "^2.6.3"
       },
       "dependencies": {
+        "array-union": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+          "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+          "dev": true,
+          "requires": {
+            "array-uniq": "^1.0.1"
+          }
+        },
         "globby": {
           "version": "6.1.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
@@ -6470,6 +6746,12 @@
       "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
       "dev": true
     },
+    "detect-node-es": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.0.0.tgz",
+      "integrity": "sha512-S4AHriUkTX9FoFvL4G8hXDcx6t3gp2HpfCza3Q0v6S78gul2hKWifLQbeW+ZF89+hSm2ZIc/uF3J97ZgytgTRg==",
+      "dev": true
+    },
     "detect-port": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz",
@@ -6514,9 +6796,9 @@
       "dev": true
     },
     "diagram-js": {
-      "version": "6.6.1",
-      "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-6.6.1.tgz",
-      "integrity": "sha512-3SlXwT2ieXCZkQn8dVZWfNry9+6d4R+0Q57Oz9t/SfIyNIrRPg0c9IlsaTHpGUhPE3fossXPDjmvqjJD0lmBLw==",
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-6.7.0.tgz",
+      "integrity": "sha512-kkY6fFUgNA/Teju776wSg3/zPmmcedLVlX48agyfEa0oJGfzsneJtwYkNSTZfBmHO5g8MKIJ6AThdwvooIMUWw==",
       "requires": {
         "css.escape": "^1.5.1",
         "didi": "^4.0.0",
@@ -6558,15 +6840,23 @@
         "bn.js": "^4.1.0",
         "miller-rabin": "^4.0.0",
         "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "dir-glob": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
       "dev": true,
       "requires": {
-        "path-type": "^3.0.0"
+        "path-type": "^4.0.0"
       }
     },
     "dns-equal": {
@@ -6604,13 +6894,13 @@
       }
     },
     "dom-helpers": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz",
-      "integrity": "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz",
+      "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.8.7",
-        "csstype": "^2.6.7"
+        "csstype": "^3.0.2"
       }
     },
     "dom-serialize": {
@@ -6644,9 +6934,9 @@
       }
     },
     "dom-walk": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
-      "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=",
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+      "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==",
       "dev": true
     },
     "domain-browser": {
@@ -6726,9 +7016,9 @@
       "dev": true
     },
     "dotenv-webpack": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz",
-      "integrity": "sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw==",
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz",
+      "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==",
       "dev": true,
       "requires": {
         "dotenv-defaults": "^1.0.2"
@@ -6775,9 +7065,9 @@
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.3.392",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.392.tgz",
-      "integrity": "sha512-/hsgeVdReDsyTBE0aU9FRdh1wnNPrX3xlz3t61F+CJPOT+Umfi9DXHsCX85TEgWZQqlow0Rw44/4/jbU2Sqgkg==",
+      "version": "1.3.523",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.523.tgz",
+      "integrity": "sha512-D4/3l5DpciddD92IDRtpLearQSGzly8FwBJv+nITvLH8YJrFabpDFe4yuiOJh2MS4/EsXqyQTXyw1toeYPtshQ==",
       "dev": true
     },
     "element-resize-detector": {
@@ -6790,9 +7080,9 @@
       }
     },
     "elliptic": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
-      "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
+      "version": "6.5.3",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
+      "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
       "dev": true,
       "requires": {
         "bn.js": "^4.4.0",
@@ -6802,12 +7092,20 @@
         "inherits": "^2.0.1",
         "minimalistic-assert": "^1.0.0",
         "minimalistic-crypto-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
       "dev": true
     },
     "emojis-list": {
@@ -6834,13 +7132,23 @@
       "dev": true
     },
     "encoding": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
-      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "iconv-lite": "~0.4.13"
+        "iconv-lite": "^0.6.2"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+          "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3.0.0"
+          }
+        }
       }
     },
     "end-of-stream": {
@@ -6853,17 +7161,17 @@
       }
     },
     "engine.io": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz",
-      "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==",
+      "version": "3.4.2",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz",
+      "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==",
       "dev": true,
       "requires": {
         "accepts": "~1.3.4",
-        "base64id": "1.0.0",
+        "base64id": "2.0.0",
         "cookie": "0.3.1",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.0",
-        "ws": "~3.3.1"
+        "debug": "~4.1.0",
+        "engine.io-parser": "~2.2.0",
+        "ws": "^7.1.2"
       },
       "dependencies": {
         "cookie": {
@@ -6872,91 +7180,48 @@
           "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
           "dev": true
         },
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
         "ws": {
-          "version": "3.3.3",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-          "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-          "dev": true,
-          "requires": {
-            "async-limiter": "~1.0.0",
-            "safe-buffer": "~5.1.0",
-            "ultron": "~1.1.0"
-          }
+          "version": "7.3.1",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
+          "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
+          "dev": true
         }
       }
     },
     "engine.io-client": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
-      "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz",
+      "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==",
       "dev": true,
       "requires": {
-        "component-emitter": "1.2.1",
+        "component-emitter": "~1.3.0",
         "component-inherit": "0.0.3",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.1",
+        "debug": "~4.1.0",
+        "engine.io-parser": "~2.2.0",
         "has-cors": "1.1.0",
         "indexof": "0.0.1",
         "parseqs": "0.0.5",
         "parseuri": "0.0.5",
-        "ws": "~3.3.1",
+        "ws": "~6.1.0",
         "xmlhttprequest-ssl": "~1.5.4",
         "yeast": "0.1.2"
       },
       "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-          "dev": true
-        },
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
         "ws": {
-          "version": "3.3.3",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-          "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+          "version": "6.1.4",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
+          "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
           "dev": true,
           "requires": {
-            "async-limiter": "~1.0.0",
-            "safe-buffer": "~5.1.0",
-            "ultron": "~1.1.0"
+            "async-limiter": "~1.0.0"
           }
         }
       }
     },
     "engine.io-parser": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
-      "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz",
+      "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==",
       "dev": true,
       "requires": {
         "after": "0.8.2",
@@ -6984,9 +7249,9 @@
       "dev": true
     },
     "entities": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
-      "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+      "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
       "dev": true
     },
     "err-code": {
@@ -7014,22 +7279,22 @@
       }
     },
     "es-abstract": {
-      "version": "1.17.5",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
-      "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+      "version": "1.17.6",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
+      "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
       "dev": true,
       "requires": {
         "es-to-primitive": "^1.2.1",
         "function-bind": "^1.1.1",
         "has": "^1.0.3",
         "has-symbols": "^1.0.1",
-        "is-callable": "^1.1.5",
-        "is-regex": "^1.0.5",
+        "is-callable": "^1.2.0",
+        "is-regex": "^1.1.0",
         "object-inspect": "^1.7.0",
         "object-keys": "^1.1.1",
         "object.assign": "^4.1.0",
-        "string.prototype.trimleft": "^2.1.1",
-        "string.prototype.trimright": "^2.1.1"
+        "string.prototype.trimend": "^1.0.1",
+        "string.prototype.trimstart": "^1.0.1"
       }
     },
     "es-array-method-boxes-properly": {
@@ -7099,6 +7364,12 @@
       "integrity": "sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg==",
       "dev": true
     },
+    "escalade": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
+      "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==",
+      "dev": true
+    },
     "escape-html": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -7155,15 +7426,15 @@
       "dev": true
     },
     "eventemitter3": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
-      "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz",
+      "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==",
       "dev": true
     },
     "events": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
-      "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
+      "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
       "dev": true
     },
     "eventsource": {
@@ -7436,9 +7707,9 @@
       }
     },
     "extract-zip": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.0.tgz",
-      "integrity": "sha512-i42GQ498yibjdvIhivUsRslx608whtGoFIhF26Z7O4MYncBxp8CwalOs1lnHy21A9sIohWO2+uiE4SRtC9JXDg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+      "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
       "dev": true,
       "requires": {
         "@types/yauzl": "^2.9.1",
@@ -7465,23 +7736,23 @@
       "dev": true
     },
     "fast-deep-equal": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
-      "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
       "dev": true
     },
     "fast-glob": {
-      "version": "2.2.7",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
-      "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz",
+      "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==",
       "dev": true,
       "requires": {
-        "@mrmlnc/readdir-enhanced": "^2.2.1",
-        "@nodelib/fs.stat": "^1.1.2",
-        "glob-parent": "^3.1.0",
-        "is-glob": "^4.0.0",
-        "merge2": "^1.2.3",
-        "micromatch": "^3.1.10"
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.0",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.2",
+        "picomatch": "^2.2.1"
       }
     },
     "fast-json-stable-stringify": {
@@ -7497,9 +7768,9 @@
       "dev": true
     },
     "fastq": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz",
-      "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==",
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz",
+      "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==",
       "dev": true,
       "requires": {
         "reusify": "^1.0.4"
@@ -7617,16 +7888,6 @@
       "dev": true,
       "optional": true
     },
-    "fileset": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
-      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
-      "dev": true,
-      "requires": {
-        "glob": "^7.0.3",
-        "minimatch": "^3.0.3"
-      }
-    },
     "filesize": {
       "version": "3.6.1",
       "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -7705,23 +7966,14 @@
           }
         },
         "make-dir": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
-          "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
           "dev": true,
           "requires": {
             "semver": "^6.0.0"
           }
         },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
         "p-locate": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
@@ -7731,12 +7983,6 @@
             "p-limit": "^2.2.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
         "path-exists": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -7767,12 +8013,12 @@
       "dev": true
     },
     "find-up": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
-      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
       "dev": true,
       "requires": {
-        "locate-path": "^2.0.0"
+        "locate-path": "^3.0.0"
       }
     },
     "find-versions": {
@@ -7823,30 +8069,16 @@
       }
     },
     "focus-lock": {
-      "version": "0.6.6",
-      "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.6.6.tgz",
-      "integrity": "sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw==",
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.7.0.tgz",
+      "integrity": "sha512-LI7v2mH02R55SekHYdv9pRHR9RajVNyIJ2N5IEkWbg7FT5ZmJ9Hw4mWxHeEUcd+dJo0QmzztHvDvWcc7prVFsw==",
       "dev": true
     },
     "follow-redirects": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz",
-      "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==",
-      "dev": true,
-      "requires": {
-        "debug": "^3.0.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz",
+      "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==",
+      "dev": true
     },
     "for-in": {
       "version": "1.0.2",
@@ -7876,11 +8108,114 @@
         "worker-rpc": "^0.1.0"
       },
       "dependencies": {
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
           "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
           "dev": true
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
         }
       }
     },
@@ -7977,9 +8312,9 @@
       "dev": true
     },
     "fsevents": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
-      "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+      "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
       "dev": true,
       "optional": true
     },
@@ -8050,6 +8385,12 @@
         }
       }
     },
+    "genfun": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
+      "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
+      "dev": true
+    },
     "gensync": {
       "version": "1.0.0-beta.1",
       "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
@@ -8057,15 +8398,15 @@
       "dev": true
     },
     "get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
       "dev": true
     },
     "get-stdin": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
-      "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+      "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
       "dev": true
     },
     "get-stream": {
@@ -8143,24 +8484,12 @@
       }
     },
     "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
       "dev": true,
       "requires": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
+        "is-glob": "^4.0.1"
       }
     },
     "glob-to-regexp": {
@@ -8215,25 +8544,17 @@
       }
     },
     "globby": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
-      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
+      "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
       "dev": true,
       "requires": {
-        "array-union": "^1.0.1",
-        "dir-glob": "^2.0.0",
-        "glob": "^7.1.2",
-        "ignore": "^3.3.5",
-        "pify": "^3.0.0",
-        "slash": "^1.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-          "dev": true
-        }
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.1.1",
+        "ignore": "^5.1.4",
+        "merge2": "^1.3.0",
+        "slash": "^3.0.0"
       }
     },
     "globjoin": {
@@ -8262,9 +8583,9 @@
       }
     },
     "graceful-fs": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
-      "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
+      "version": "4.2.4",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+      "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
       "dev": true
     },
     "gud": {
@@ -8301,12 +8622,12 @@
       "dev": true
     },
     "har-validator": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
-      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+      "version": "5.1.5",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
       "dev": true,
       "requires": {
-        "ajv": "^6.5.5",
+        "ajv": "^6.12.3",
         "har-schema": "^2.0.0"
       }
     },
@@ -8428,13 +8749,33 @@
       }
     },
     "hash-base": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
-      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
       "dev": true,
       "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
       }
     },
     "hash.js": {
@@ -8510,12 +8851,23 @@
       "dev": true
     },
     "hosted-git-info": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz",
-      "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==",
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz",
+      "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==",
       "dev": true,
       "requires": {
-        "lru-cache": "^5.1.1"
+        "lru-cache": "^6.0.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        }
       }
     },
     "hpack.js": {
@@ -8549,9 +8901,9 @@
       "dev": true
     },
     "html-entities": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
-      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
+      "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==",
       "dev": true
     },
     "html-escaper": {
@@ -8561,9 +8913,9 @@
       "dev": true
     },
     "html-minifier-terser": {
-      "version": "5.0.5",
-      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz",
-      "integrity": "sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
+      "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==",
       "dev": true,
       "requires": {
         "camel-case": "^4.1.1",
@@ -8590,9 +8942,9 @@
       "dev": true
     },
     "html-webpack-plugin": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.4.tgz",
-      "integrity": "sha512-BREQzUbFfIQS39KqxkT2L1Ot0tuu1isako1CaCQLrgEQ43zi2ScHAe3SMTnVBWsStnIsGtl8jprDdxwZkNhrwQ==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz",
+      "integrity": "sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w==",
       "dev": true,
       "requires": {
         "@types/html-minifier-terser": "^5.0.0",
@@ -8672,9 +9024,9 @@
       }
     },
     "http-cache-semantics": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+      "version": "3.8.1",
+      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
+      "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
       "dev": true
     },
     "http-deceiver": {
@@ -8704,16 +9056,10 @@
         }
       }
     },
-    "http-parser-js": {
-      "version": "0.4.10",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
-      "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
-      "dev": true
-    },
     "http-proxy": {
-      "version": "1.18.0",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
-      "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
       "dev": true,
       "requires": {
         "eventemitter3": "^4.0.0",
@@ -8722,14 +9068,30 @@
       }
     },
     "http-proxy-agent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
-      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
+      "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
       "dev": true,
       "requires": {
-        "@tootallnate/once": "1",
-        "agent-base": "6",
-        "debug": "4"
+        "agent-base": "4",
+        "debug": "3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
       }
     },
     "http-proxy-middleware": {
@@ -8742,6 +9104,111 @@
         "is-glob": "^4.0.0",
         "lodash": "^4.17.11",
         "micromatch": "^3.1.10"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
+        }
       }
     },
     "http-signature": {
@@ -8762,13 +9229,24 @@
       "dev": true
     },
     "https-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
+      "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
       "dev": true,
       "requires": {
-        "agent-base": "6",
-        "debug": "4"
+        "agent-base": "^4.3.0",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
       }
     },
     "humanize-ms": {
@@ -8781,14 +9259,14 @@
       }
     },
     "husky": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.3.tgz",
-      "integrity": "sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ==",
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz",
+      "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==",
       "dev": true,
       "requires": {
-        "chalk": "^3.0.0",
+        "chalk": "^4.0.0",
         "ci-info": "^2.0.0",
-        "compare-versions": "^3.5.1",
+        "compare-versions": "^3.6.0",
         "cosmiconfig": "^6.0.0",
         "find-versions": "^3.2.0",
         "opencollective-postinstall": "^2.0.2",
@@ -8809,9 +9287,9 @@
           }
         },
         "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+          "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
           "dev": true,
           "requires": {
             "ansi-styles": "^4.1.0",
@@ -8881,15 +9359,6 @@
             "p-locate": "^4.1.0"
           }
         },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
         "p-locate": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
@@ -8899,16 +9368,10 @@
             "p-limit": "^2.2.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
         "parse-json": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
-          "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
+          "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.0.0",
@@ -8923,12 +9386,6 @@
           "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
           "dev": true
         },
-        "path-type": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-          "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-          "dev": true
-        },
         "pkg-dir": {
           "version": "4.2.0",
           "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -8944,12 +9401,6 @@
           "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
           "dev": true
         },
-        "slash": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-          "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-          "dev": true
-        },
         "supports-color": {
           "version": "7.1.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
@@ -8997,9 +9448,9 @@
       "dev": true
     },
     "ignore": {
-      "version": "3.3.10",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
-      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+      "version": "5.1.8",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+      "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
       "dev": true
     },
     "ignore-walk": {
@@ -9186,6 +9637,12 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
         "has-flag": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -9251,9 +9708,9 @@
       }
     },
     "interpret": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.0.0.tgz",
-      "integrity": "sha512-e0/LknJ8wpMMhTiWcjivB+ESwIuvHnBSlBbmP/pSb8CQJldoj1p2qv7xGZ/+BtbTziYRFSz8OsvdbiX45LtYQA==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+      "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
       "dev": true
     },
     "invariant": {
@@ -9265,12 +9722,6 @@
         "loose-envify": "^1.0.0"
       }
     },
-    "invert-kv": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-      "dev": true
-    },
     "ip": {
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -9365,9 +9816,9 @@
       "dev": true
     },
     "is-callable": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
-      "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
+      "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
       "dev": true
     },
     "is-color-stop": {
@@ -9442,9 +9893,9 @@
       "dev": true
     },
     "is-docker": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz",
-      "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
+      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
       "dev": true
     },
     "is-dom": {
@@ -9476,9 +9927,9 @@
       "dev": true
     },
     "is-function": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
-      "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
+      "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==",
       "dev": true
     },
     "is-glob": {
@@ -9502,12 +9953,6 @@
       "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
       "dev": true
     },
-    "is-lambda": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
-      "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=",
-      "dev": true
-    },
     "is-map": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz",
@@ -9571,19 +10016,13 @@
         "isobject": "^3.0.1"
       }
     },
-    "is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
-      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
-      "dev": true
-    },
     "is-regex": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
-      "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
+      "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
       "dev": true,
       "requires": {
-        "has": "^1.0.3"
+        "has-symbols": "^1.0.1"
       }
     },
     "is-regexp": {
@@ -9671,10 +10110,13 @@
       "dev": true
     },
     "is-wsl": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz",
-      "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==",
-      "dev": true
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+      "dev": true,
+      "requires": {
+        "is-docker": "^2.0.0"
+      }
     },
     "isarray": {
       "version": "1.0.0",
@@ -9683,13 +10125,10 @@
       "dev": true
     },
     "isbinaryfile": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
-      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
-      "dev": true,
-      "requires": {
-        "buffer-alloc": "^1.2.0"
-      }
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz",
+      "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==",
+      "dev": true
     },
     "isexe": {
       "version": "2.0.0",
@@ -9709,81 +10148,19 @@
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
       "dev": true
     },
-    "istanbul-api": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz",
-      "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==",
-      "dev": true,
-      "requires": {
-        "async": "^2.6.2",
-        "compare-versions": "^3.4.0",
-        "fileset": "^2.0.3",
-        "istanbul-lib-coverage": "^2.0.5",
-        "istanbul-lib-hook": "^2.0.7",
-        "istanbul-lib-instrument": "^3.3.0",
-        "istanbul-lib-report": "^2.0.8",
-        "istanbul-lib-source-maps": "^3.0.6",
-        "istanbul-reports": "^2.2.4",
-        "js-yaml": "^3.13.1",
-        "make-dir": "^2.1.0",
-        "minimatch": "^3.0.4",
-        "once": "^1.4.0"
-      },
-      "dependencies": {
-        "istanbul-lib-coverage": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-          "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
-          "dev": true
-        },
-        "istanbul-lib-instrument": {
-          "version": "3.3.0",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
-          "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
-          "dev": true,
-          "requires": {
-            "@babel/generator": "^7.4.0",
-            "@babel/parser": "^7.4.3",
-            "@babel/template": "^7.4.0",
-            "@babel/traverse": "^7.4.3",
-            "@babel/types": "^7.4.0",
-            "istanbul-lib-coverage": "^2.0.5",
-            "semver": "^6.0.0"
-          }
-        },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-          "dev": true
-        }
-      }
-    },
     "istanbul-lib-coverage": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
       "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
       "dev": true
     },
-    "istanbul-lib-hook": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz",
-      "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==",
-      "dev": true,
-      "requires": {
-        "append-transform": "^1.0.0"
-      }
-    },
     "istanbul-lib-instrument": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz",
-      "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+      "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
       "dev": true,
       "requires": {
         "@babel/core": "^7.7.5",
-        "@babel/parser": "^7.7.5",
-        "@babel/template": "^7.7.4",
-        "@babel/traverse": "^7.7.4",
         "@istanbuljs/schema": "^0.1.2",
         "istanbul-lib-coverage": "^3.0.0",
         "semver": "^6.3.0"
@@ -9798,29 +10175,44 @@
       }
     },
     "istanbul-lib-report": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
-      "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
       "dev": true,
       "requires": {
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "supports-color": "^6.1.0"
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
       },
       "dependencies": {
-        "istanbul-lib-coverage": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-          "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+        "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
+        },
+        "make-dir": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+          "dev": true,
+          "requires": {
+            "semver": "^6.0.0"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
           "dev": true
         },
         "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+          "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
           "dev": true,
           "requires": {
-            "has-flag": "^3.0.0"
+            "has-flag": "^4.0.0"
           }
         }
       }
@@ -9862,12 +10254,13 @@
       }
     },
     "istanbul-reports": {
-      "version": "2.2.7",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz",
-      "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz",
+      "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==",
       "dev": true,
       "requires": {
-        "html-escaper": "^2.0.0"
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
       }
     },
     "iterate-iterator": {
@@ -9918,6 +10311,14 @@
       "dev": true,
       "requires": {
         "colors": "1.1.2"
+      },
+      "dependencies": {
+        "colors": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+          "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+          "dev": true
+        }
       }
     },
     "jasminewd2": {
@@ -9960,9 +10361,9 @@
       "dev": true
     },
     "js-yaml": {
-      "version": "3.13.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
-      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+      "version": "3.14.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+      "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
       "dev": true,
       "requires": {
         "argparse": "^1.0.7",
@@ -9987,12 +10388,6 @@
       "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
       "dev": true
     },
-    "json-parse-even-better-errors": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz",
-      "integrity": "sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g==",
-      "dev": true
-    },
     "json-schema": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -10018,9 +10413,9 @@
       "dev": true
     },
     "json5": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz",
-      "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+      "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
       "dev": true,
       "requires": {
         "minimist": "^1.2.5"
@@ -10054,9 +10449,9 @@
       }
     },
     "jszip": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz",
-      "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==",
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz",
+      "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==",
       "dev": true,
       "requires": {
         "lie": "~3.3.0",
@@ -10066,59 +10461,205 @@
       }
     },
     "karma": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz",
-      "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-5.1.1.tgz",
+      "integrity": "sha512-xAlOr5PMqUbiKXSv5PCniHWV3aiwj6wIZ0gUVcwpTCPVQm/qH2WAMFWxtnpM6KJqhkRWrIpovR4Rb0rn8GtJzQ==",
       "dev": true,
       "requires": {
-        "bluebird": "^3.3.0",
-        "body-parser": "^1.16.1",
+        "body-parser": "^1.19.0",
         "braces": "^3.0.2",
         "chokidar": "^3.0.0",
-        "colors": "^1.1.0",
-        "connect": "^3.6.0",
+        "colors": "^1.4.0",
+        "connect": "^3.7.0",
         "di": "^0.0.1",
-        "dom-serialize": "^2.2.0",
-        "flatted": "^2.0.0",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.1.2",
-        "http-proxy": "^1.13.0",
-        "isbinaryfile": "^3.0.0",
-        "lodash": "^4.17.14",
-        "log4js": "^4.0.0",
-        "mime": "^2.3.1",
-        "minimatch": "^3.0.2",
-        "optimist": "^0.6.1",
-        "qjobs": "^1.1.4",
-        "range-parser": "^1.2.0",
-        "rimraf": "^2.6.0",
-        "safe-buffer": "^5.0.1",
-        "socket.io": "2.1.1",
+        "dom-serialize": "^2.2.1",
+        "flatted": "^2.0.2",
+        "glob": "^7.1.6",
+        "graceful-fs": "^4.2.4",
+        "http-proxy": "^1.18.1",
+        "isbinaryfile": "^4.0.6",
+        "lodash": "^4.17.15",
+        "log4js": "^6.2.1",
+        "mime": "^2.4.5",
+        "minimatch": "^3.0.4",
+        "qjobs": "^1.2.0",
+        "range-parser": "^1.2.1",
+        "rimraf": "^3.0.2",
+        "socket.io": "^2.3.0",
         "source-map": "^0.6.1",
-        "tmp": "0.0.33",
-        "useragent": "2.3.0"
+        "tmp": "0.2.1",
+        "ua-parser-js": "0.7.21",
+        "yargs": "^15.3.1"
       },
       "dependencies": {
-        "mime": {
-          "version": "2.4.4",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
           "dev": true
         },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+        "ansi-styles": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+          "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "@types/color-name": "^1.1.1",
+            "color-convert": "^2.0.1"
           }
         },
+        "cliui": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+          "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^6.2.0"
+          }
+        },
+        "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,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "mime": {
+          "version": "2.4.6",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+          "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
+          "dev": true
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
+        },
+        "string-width": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.0"
+          }
+        },
+        "tmp": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+          "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+          "dev": true,
+          "requires": {
+            "rimraf": "^3.0.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "yargs": {
+          "version": "15.4.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+          "dev": true,
+          "requires": {
+            "cliui": "^6.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^4.1.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^4.2.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^18.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "18.1.3",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
         }
       }
     },
@@ -10132,28 +10673,31 @@
       }
     },
     "karma-coverage-istanbul-reporter": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz",
-      "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz",
+      "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==",
       "dev": true,
       "requires": {
-        "istanbul-api": "^2.1.6",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^3.0.6",
+        "istanbul-reports": "^3.0.2",
         "minimatch": "^3.0.4"
       }
     },
     "karma-jasmine": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.0.3.tgz",
-      "integrity": "sha512-80iBR8/hLFY2Uw3S2GG6EndWtMCGMJjrCYNwYROWsJFVTjWrRSsLqcA2ye+U3ygW5sjOQo8f+78L8cGUxjC/+A==",
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.3.1.tgz",
+      "integrity": "sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ==",
       "dev": true,
       "requires": {
         "jasmine-core": "^3.5.0"
       }
     },
     "karma-jasmine-html-reporter": {
-      "version": "1.5.3",
-      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.3.tgz",
-      "integrity": "sha512-ci0VrjuCaFj+9d1tYlTE3KIPUCp0rz874zWWU3JgCMqGIyw5ke+BXWFPOAGAqUdCJcrMwneyvp1zFXA74MiPUA==",
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz",
+      "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==",
       "dev": true
     },
     "karma-source-map-support": {
@@ -10187,9 +10731,9 @@
       }
     },
     "known-css-properties": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.18.0.tgz",
-      "integrity": "sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==",
+      "version": "0.19.0",
+      "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.19.0.tgz",
+      "integrity": "sha512-eYboRV94Vco725nKMlpkn3nV2+96p9c3gKXRsYqAJSswSENvBhN7n5L+uDhY58xQa0UukWsDMTGELzmD8Q+wTA==",
       "dev": true
     },
     "lazy-universal-dotenv": {
@@ -10213,32 +10757,23 @@
         }
       }
     },
-    "lcid": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-      "dev": true,
-      "requires": {
-        "invert-kv": "^2.0.0"
-      }
-    },
     "leaflet": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.6.0.tgz",
       "integrity": "sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ=="
     },
     "less": {
-      "version": "3.11.1",
-      "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz",
-      "integrity": "sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==",
+      "version": "3.11.3",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.11.3.tgz",
+      "integrity": "sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw==",
       "dev": true,
       "requires": {
         "clone": "^2.1.2",
         "errno": "^0.1.1",
         "graceful-fs": "^4.1.2",
         "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
         "mime": "^1.4.1",
-        "mkdirp": "^0.5.0",
         "promise": "^7.1.1",
         "request": "^2.83.0",
         "source-map": "~0.6.0",
@@ -10338,9 +10873,9 @@
       }
     },
     "license-webpack-plugin": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz",
-      "integrity": "sha512-1Xq72fmPbTg5KofXs+yI5L4QqPFjQ6mZxoeI6D7gfiEDOtaEIk6PGrdLaej90bpDqKNHNxlQ/MW4tMAL6xMPJQ==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.0.tgz",
+      "integrity": "sha512-JK/DXrtN6UeYQSgkg5q1+pgJ8aiKPL9tnz9Wzw+Ikkf+8mJxG56x6t8O+OH/tAeF/5NREnelTEMyFtbJNkjH4w==",
       "dev": true,
       "requires": {
         "@types/webpack-sources": "^0.1.5",
@@ -10380,19 +10915,19 @@
       }
     },
     "locate-path": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
       "dev": true,
       "requires": {
-        "p-locate": "^2.0.0",
+        "p-locate": "^3.0.0",
         "path-exists": "^3.0.0"
       }
     },
     "lodash": {
-      "version": "4.17.15",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+      "version": "4.17.19",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
       "dev": true
     },
     "lodash.clonedeep": {
@@ -10435,22 +10970,22 @@
       }
     },
     "log4js": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz",
-      "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==",
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz",
+      "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==",
       "dev": true,
       "requires": {
-        "date-format": "^2.0.0",
+        "date-format": "^3.0.0",
         "debug": "^4.1.1",
-        "flatted": "^2.0.0",
+        "flatted": "^2.0.1",
         "rfdc": "^1.1.4",
-        "streamroller": "^1.0.6"
+        "streamroller": "^2.2.4"
       }
     },
     "loglevel": {
-      "version": "1.6.7",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz",
-      "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==",
+      "version": "1.6.8",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz",
+      "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==",
       "dev": true
     },
     "longest-streak": {
@@ -10538,26 +11073,65 @@
       "dev": true
     },
     "make-fetch-happen": {
-      "version": "8.0.4",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.4.tgz",
-      "integrity": "sha512-hIFoqGq1db0QMiy/Atr/pI1Rs4rDV+ZdGSey2SQyF3KK3u1z4aj9mS5UdNnZkdQpA+H3pGn0J3KlEwsi2x4EqA==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz",
+      "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==",
       "dev": true,
       "requires": {
-        "agentkeepalive": "^4.1.0",
-        "cacache": "^15.0.0",
-        "http-cache-semantics": "^4.0.4",
-        "http-proxy-agent": "^4.0.1",
-        "https-proxy-agent": "^5.0.0",
-        "is-lambda": "^1.0.1",
+        "agentkeepalive": "^3.4.1",
+        "cacache": "^12.0.0",
+        "http-cache-semantics": "^3.8.1",
+        "http-proxy-agent": "^2.1.0",
+        "https-proxy-agent": "^2.2.3",
         "lru-cache": "^5.1.1",
-        "minipass": "^3.0.0",
-        "minipass-collect": "^1.0.2",
-        "minipass-fetch": "^1.1.2",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.2",
+        "mississippi": "^3.0.0",
+        "node-fetch-npm": "^2.0.2",
         "promise-retry": "^1.1.1",
-        "socks-proxy-agent": "^5.0.0",
-        "ssri": "^8.0.0"
+        "socks-proxy-agent": "^4.0.0",
+        "ssri": "^6.0.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "12.0.4",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "ssri": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "dev": true,
+          "requires": {
+            "figgy-pudding": "^3.5.1"
+          }
+        }
       }
     },
     "mamacro": {
@@ -10566,15 +11140,6 @@
       "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
       "dev": true
     },
-    "map-age-cleaner": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-      "dev": true,
-      "requires": {
-        "p-defer": "^1.0.0"
-      }
-    },
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -10609,15 +11174,18 @@
       "dev": true
     },
     "markdown-table": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz",
-      "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==",
-      "dev": true
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
+      "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+      "dev": true,
+      "requires": {
+        "repeat-string": "^1.0.0"
+      }
     },
     "markdown-to-jsx": {
-      "version": "6.11.0",
-      "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.0.tgz",
-      "integrity": "sha512-RH7LCJQ4RFmPqVeZEesKaO1biRzB/k4utoofmTCp3Eiw6D7qfvK8fzZq/2bjEJAtVkfPrM5SMt5APGf2rnaKMg==",
+      "version": "6.11.4",
+      "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz",
+      "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==",
       "dev": true,
       "requires": {
         "prop-types": "^15.6.2",
@@ -10658,12 +11226,12 @@
       }
     },
     "mdast-util-compact": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz",
-      "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz",
+      "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==",
       "dev": true,
       "requires": {
-        "unist-util-visit": "^1.1.0"
+        "unist-util-visit": "^2.0.0"
       }
     },
     "mdn-data": {
@@ -10678,17 +11246,6 @@
       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
       "dev": true
     },
-    "mem": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-      "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-      "dev": true,
-      "requires": {
-        "map-age-cleaner": "^0.1.1",
-        "mimic-fn": "^2.0.0",
-        "p-is-promise": "^2.0.0"
-      }
-    },
     "memoize-one": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
@@ -10715,38 +11272,60 @@
       }
     },
     "meow": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.0.tgz",
-      "integrity": "sha512-iIAoeI01v6pmSfObAAWFoITAA4GgiT45m4SmJgoxtZfvI0fyZwhV4d0lTwiUXvAKIPlma05Feb2Xngl52Mj5Cg==",
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz",
+      "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==",
       "dev": true,
       "requires": {
         "@types/minimist": "^1.2.0",
-        "camelcase-keys": "^6.1.1",
+        "arrify": "^2.0.1",
+        "camelcase": "^6.0.0",
+        "camelcase-keys": "^6.2.2",
         "decamelize-keys": "^1.1.0",
-        "hard-rejection": "^2.0.0",
-        "minimist-options": "^4.0.1",
+        "hard-rejection": "^2.1.0",
+        "minimist-options": "^4.0.2",
         "normalize-package-data": "^2.5.0",
-        "read-pkg-up": "^7.0.0",
+        "read-pkg-up": "^7.0.1",
         "redent": "^3.0.0",
         "trim-newlines": "^3.0.0",
-        "type-fest": "^0.8.1",
-        "yargs-parser": "^18.1.1"
+        "type-fest": "^0.13.1",
+        "yargs-parser": "^18.1.3"
       },
       "dependencies": {
+        "arrify": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz",
+          "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==",
+          "dev": true
+        },
         "type-fest": {
-          "version": "0.8.1",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-          "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+          "version": "0.13.1",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+          "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
           "dev": true
         },
         "yargs-parser": {
-          "version": "18.1.2",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz",
-          "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==",
+          "version": "18.1.3",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
           "dev": true,
           "requires": {
             "camelcase": "^5.0.0",
             "decamelize": "^1.2.0"
+          },
+          "dependencies": {
+            "camelcase": {
+              "version": "5.3.1",
+              "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+              "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+              "dev": true
+            }
           }
         }
       }
@@ -10781,9 +11360,9 @@
       "dev": true
     },
     "merge2": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
-      "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
       "dev": true
     },
     "methods": {
@@ -10792,11 +11371,6 @@
       "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
       "dev": true
     },
-    "mgrs": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz",
-      "integrity": "sha1-+5FYjnjJACVnI5XLQLJffNatGCk="
-    },
     "microevent.ts": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz",
@@ -10804,108 +11378,13 @@
       "dev": true
     },
     "micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+      "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
       "dev": true,
       "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
+        "braces": "^3.0.1",
+        "picomatch": "^2.0.5"
       }
     },
     "miller-rabin": {
@@ -10916,6 +11395,14 @@
       "requires": {
         "bn.js": "^4.0.0",
         "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "mime": {
@@ -10925,18 +11412,18 @@
       "dev": true
     },
     "mime-db": {
-      "version": "1.43.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
-      "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
+      "version": "1.44.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+      "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
       "dev": true
     },
     "mime-types": {
-      "version": "2.1.26",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
-      "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+      "version": "2.1.27",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+      "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
       "dev": true,
       "requires": {
-        "mime-db": "1.43.0"
+        "mime-db": "1.44.0"
       }
     },
     "mimic-fn": {
@@ -10971,9 +11458,9 @@
       }
     },
     "min-indent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz",
-      "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+      "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
       "dev": true
     },
     "mini-css-extract-plugin": {
@@ -11061,19 +11548,20 @@
       "dev": true
     },
     "minimist-options": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz",
-      "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+      "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
       "dev": true,
       "requires": {
         "arrify": "^1.0.1",
-        "is-plain-obj": "^1.1.0"
+        "is-plain-obj": "^1.1.0",
+        "kind-of": "^6.0.3"
       }
     },
     "minipass": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz",
-      "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
+      "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
       "dev": true,
       "requires": {
         "yallist": "^4.0.0"
@@ -11088,19 +11576,6 @@
         "minipass": "^3.0.0"
       }
     },
-    "minipass-fetch": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.2.1.tgz",
-      "integrity": "sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg==",
-      "dev": true,
-      "requires": {
-        "encoding": "^0.1.12",
-        "minipass": "^3.1.0",
-        "minipass-pipeline": "^1.2.2",
-        "minipass-sized": "^1.0.3",
-        "minizlib": "^2.0.0"
-      }
-    },
     "minipass-flush": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
@@ -11110,29 +11585,10 @@
         "minipass": "^3.0.0"
       }
     },
-    "minipass-json-stream": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
-      "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==",
-      "dev": true,
-      "requires": {
-        "jsonparse": "^1.3.1",
-        "minipass": "^3.0.0"
-      }
-    },
     "minipass-pipeline": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz",
-      "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "minipass-sized": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
-      "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
+      "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
       "dev": true,
       "requires": {
         "minipass": "^3.0.0"
@@ -11188,9 +11644,9 @@
       }
     },
     "mkdirp": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
-      "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
       "dev": true,
       "requires": {
         "minimist": "^1.2.5"
@@ -11221,9 +11677,9 @@
       }
     },
     "moment": {
-      "version": "2.24.0",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
-      "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
+      "version": "2.27.0",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
+      "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
     },
     "move-concurrently": {
       "version": "1.0.1",
@@ -11279,9 +11735,9 @@
       "dev": true
     },
     "nan": {
-      "version": "2.14.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+      "version": "2.14.1",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+      "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
       "dev": true,
       "optional": true
     },
@@ -11311,9 +11767,9 @@
       "dev": true
     },
     "neo-async": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
-      "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
     "nice-try": {
@@ -11338,6 +11794,17 @@
       "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
       "dev": true
     },
+    "node-fetch-npm": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
+      "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==",
+      "dev": true,
+      "requires": {
+        "encoding": "^0.1.11",
+        "json-parse-better-errors": "^1.0.0",
+        "safe-buffer": "^5.1.1"
+      }
+    },
     "node-forge": {
       "version": "0.9.0",
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
@@ -11384,9 +11851,9 @@
       }
     },
     "node-releases": {
-      "version": "1.1.53",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
-      "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==",
+      "version": "1.1.60",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz",
+      "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==",
       "dev": true
     },
     "nopt": {
@@ -11485,14 +11952,13 @@
       }
     },
     "npm-packlist": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.1.tgz",
-      "integrity": "sha512-95TSDvGwujIhqfSpIiRRLodEF+y6mJMopuZdahoGzqtRDFZXGav46S0p6ngeWaiAkb5R72w6eVARhzej0HvZeQ==",
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
+      "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
       "dev": true,
       "requires": {
-        "glob": "^7.1.6",
-        "ignore-walk": "^3.0.3",
-        "npm-bundled": "^1.1.1",
+        "ignore-walk": "^3.0.1",
+        "npm-bundled": "^1.0.1",
         "npm-normalize-package-bin": "^1.0.1"
       }
     },
@@ -11508,19 +11974,50 @@
       }
     },
     "npm-registry-fetch": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-8.0.0.tgz",
-      "integrity": "sha512-975WwLvZjX97y9UWWQ8nAyr7bw02s9xKPHqvEm5T900LQsB1HXb8Gb9ebYtCBLSX+K8gSOrO5KS/9yV/naLZmQ==",
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz",
+      "integrity": "sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q==",
       "dev": true,
       "requires": {
-        "@npmcli/ci-detect": "^1.0.0",
+        "JSONStream": "^1.3.4",
+        "bluebird": "^3.5.1",
+        "figgy-pudding": "^3.4.1",
         "lru-cache": "^5.1.1",
-        "make-fetch-happen": "^8.0.2",
-        "minipass": "^3.0.0",
-        "minipass-fetch": "^1.1.2",
-        "minipass-json-stream": "^1.0.1",
-        "minizlib": "^2.0.0",
-        "npm-package-arg": "^8.0.0"
+        "make-fetch-happen": "^5.0.0",
+        "npm-package-arg": "^6.1.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "hosted-git-info": {
+          "version": "2.8.8",
+          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+          "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+          "dev": true
+        },
+        "npm-package-arg": {
+          "version": "6.1.1",
+          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
+          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^2.7.1",
+            "osenv": "^0.1.5",
+            "semver": "^5.6.0",
+            "validate-npm-package-name": "^3.0.0"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
       }
     },
     "npm-run-path": {
@@ -11615,16 +12112,20 @@
       }
     },
     "object-inspect": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
-      "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
+      "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
       "dev": true
     },
     "object-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz",
-      "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==",
-      "dev": true
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
+      "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
     },
     "object-keys": {
       "version": "1.1.1",
@@ -11659,14 +12160,13 @@
       }
     },
     "object.entries": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz",
-      "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz",
+      "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==",
       "dev": true,
       "requires": {
         "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.0-next.1",
-        "function-bind": "^1.1.1",
+        "es-abstract": "^1.17.5",
         "has": "^1.0.3"
       }
     },
@@ -11744,9 +12244,9 @@
       }
     },
     "onetime": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
-      "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.1.tgz",
+      "integrity": "sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==",
       "dev": true,
       "requires": {
         "mimic-fn": "^2.1.0"
@@ -11763,9 +12263,9 @@
       }
     },
     "opencollective-postinstall": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
-      "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
+      "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
       "dev": true
     },
     "opener": {
@@ -11791,24 +12291,6 @@
         }
       }
     },
-    "optimist": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-      "dev": true,
-      "requires": {
-        "minimist": "~0.0.1",
-        "wordwrap": "~0.0.2"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.10",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-          "dev": true
-        }
-      }
-    },
     "ora": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz",
@@ -11913,17 +12395,6 @@
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
       "dev": true
     },
-    "os-locale": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-      "dev": true,
-      "requires": {
-        "execa": "^1.0.0",
-        "lcid": "^2.0.0",
-        "mem": "^4.0.0"
-      }
-    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -11940,40 +12411,28 @@
         "os-tmpdir": "^1.0.0"
       }
     },
-    "p-defer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-      "dev": true
-    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
       "dev": true
     },
-    "p-is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
-      "dev": true
-    },
     "p-limit": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-      "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
       "dev": true,
       "requires": {
-        "p-try": "^1.0.0"
+        "p-try": "^2.0.0"
       }
     },
     "p-locate": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
       "dev": true,
       "requires": {
-        "p-limit": "^1.1.0"
+        "p-limit": "^2.0.0"
       }
     },
     "p-map": {
@@ -11995,48 +12454,129 @@
       }
     },
     "p-try": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
-      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
       "dev": true
     },
     "pacote": {
-      "version": "11.1.4",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.1.4.tgz",
-      "integrity": "sha512-eUGJvSSpWFZKn3z8gig/HgnBmUl6gIWByIIaHzSyEr3tOWX0w8tFEADXtpu8HGv5E0ShCeTP6enRq8iHKCHSvw==",
+      "version": "9.5.12",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz",
+      "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==",
       "dev": true,
       "requires": {
-        "@npmcli/git": "^2.0.1",
-        "@npmcli/installed-package-contents": "^1.0.5",
-        "@npmcli/promise-spawn": "^1.1.0",
-        "cacache": "^15.0.0",
-        "chownr": "^1.1.4",
-        "fs-minipass": "^2.1.0",
+        "bluebird": "^3.5.3",
+        "cacache": "^12.0.2",
+        "chownr": "^1.1.2",
+        "figgy-pudding": "^3.5.1",
+        "get-stream": "^4.1.0",
+        "glob": "^7.1.3",
         "infer-owner": "^1.0.4",
         "lru-cache": "^5.1.1",
-        "minipass": "^3.0.1",
-        "minipass-fetch": "^1.2.1",
-        "mkdirp": "^1.0.3",
-        "npm-package-arg": "^8.0.1",
-        "npm-packlist": "^2.1.0",
-        "npm-pick-manifest": "^6.0.0",
-        "npm-registry-fetch": "^8.0.0",
+        "make-fetch-happen": "^5.0.0",
+        "minimatch": "^3.0.4",
+        "minipass": "^2.3.5",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "normalize-package-data": "^2.4.0",
+        "npm-normalize-package-bin": "^1.0.0",
+        "npm-package-arg": "^6.1.0",
+        "npm-packlist": "^1.1.12",
+        "npm-pick-manifest": "^3.0.0",
+        "npm-registry-fetch": "^4.0.0",
+        "osenv": "^0.1.5",
         "promise-inflight": "^1.0.1",
         "promise-retry": "^1.1.1",
-        "read-package-json-fast": "^1.1.3",
-        "rimraf": "^2.7.1",
-        "semver": "^7.1.3",
-        "ssri": "^8.0.0",
-        "tar": "^6.0.1",
-        "which": "^2.0.2"
+        "protoduck": "^5.0.1",
+        "rimraf": "^2.6.2",
+        "safe-buffer": "^5.1.2",
+        "semver": "^5.6.0",
+        "ssri": "^6.0.1",
+        "tar": "^4.4.10",
+        "unique-filename": "^1.1.1",
+        "which": "^1.3.1"
       },
       "dependencies": {
-        "mkdirp": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz",
-          "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==",
+        "cacache": {
+          "version": "12.0.4",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "fs-minipass": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+          "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+          "dev": true,
+          "requires": {
+            "minipass": "^2.6.0"
+          }
+        },
+        "hosted-git-info": {
+          "version": "2.8.8",
+          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
+          "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
           "dev": true
         },
+        "minipass": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+          "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+          "dev": true,
+          "requires": {
+            "minipass": "^2.9.0"
+          }
+        },
+        "npm-package-arg": {
+          "version": "6.1.1",
+          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
+          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^2.7.1",
+            "osenv": "^0.1.5",
+            "semver": "^5.6.0",
+            "validate-npm-package-name": "^3.0.0"
+          }
+        },
+        "npm-pick-manifest": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
+          "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
+          "dev": true,
+          "requires": {
+            "figgy-pudding": "^3.5.1",
+            "npm-package-arg": "^6.0.0",
+            "semver": "^5.4.1"
+          }
+        },
         "rimraf": {
           "version": "2.7.1",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -12046,14 +12586,41 @@
             "glob": "^7.1.3"
           }
         },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        },
+        "ssri": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
           "dev": true,
           "requires": {
-            "isexe": "^2.0.0"
+            "figgy-pudding": "^3.5.1"
           }
+        },
+        "tar": {
+          "version": "4.4.13",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+          "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+          "dev": true,
+          "requires": {
+            "chownr": "^1.1.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.8.6",
+            "minizlib": "^1.2.1",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.3"
+          }
+        },
+        "yallist": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+          "dev": true
         }
       }
     },
@@ -12140,10 +12707,10 @@
       }
     },
     "parse5": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
-      "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
-      "dev": true
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
+      "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+      "optional": true
     },
     "parseqs": {
       "version": "0.0.5",
@@ -12239,26 +12806,15 @@
       "dev": true
     },
     "path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "requires": {
-        "pify": "^3.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-          "dev": true
-        }
-      }
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true
     },
     "pbkdf2": {
-      "version": "3.0.17",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
-      "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
+      "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
       "dev": true,
       "requires": {
         "create-hash": "^1.1.2",
@@ -12314,51 +12870,6 @@
       "dev": true,
       "requires": {
         "find-up": "^3.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        }
       }
     },
     "pkg-up": {
@@ -12368,6 +12879,51 @@
       "dev": true,
       "requires": {
         "find-up": "^2.1.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        }
       }
     },
     "please-upgrade-node": {
@@ -12389,12 +12945,12 @@
       }
     },
     "polished": {
-      "version": "3.5.1",
-      "resolved": "https://registry.npmjs.org/polished/-/polished-3.5.1.tgz",
-      "integrity": "sha512-GVbvskpBiDV5TknurGL6OyFfLHsCknxbU8w5iMppT8rW0tLEoQHrIRfrPNPqGXNj3HGhkjRvhmg59Fy7HSnCAw==",
+      "version": "3.6.5",
+      "resolved": "https://registry.npmjs.org/polished/-/polished-3.6.5.tgz",
+      "integrity": "sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ==",
       "dev": true,
       "requires": {
-        "@babel/runtime": "^7.8.7"
+        "@babel/runtime": "^7.9.2"
       }
     },
     "popper.js": {
@@ -12404,14 +12960,14 @@
       "dev": true
     },
     "portfinder": {
-      "version": "1.0.25",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
-      "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
+      "version": "1.0.28",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
+      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
       "dev": true,
       "requires": {
         "async": "^2.6.2",
         "debug": "^3.1.1",
-        "mkdirp": "^0.5.1"
+        "mkdirp": "^0.5.5"
       },
       "dependencies": {
         "debug": {
@@ -12546,9 +13102,9 @@
       }
     },
     "postcss-flexbugs-fixes": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz",
-      "integrity": "sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ==",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz",
+      "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==",
       "dev": true,
       "requires": {
         "postcss": "^7.0.26"
@@ -12583,15 +13139,6 @@
         }
       }
     },
-    "postcss-jsx": {
-      "version": "0.36.4",
-      "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.4.tgz",
-      "integrity": "sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==",
-      "dev": true,
-      "requires": {
-        "@babel/core": ">=7.2.2"
-      }
-    },
     "postcss-less": {
       "version": "3.1.4",
       "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz",
@@ -12656,16 +13203,6 @@
         }
       }
     },
-    "postcss-markdown": {
-      "version": "0.36.0",
-      "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz",
-      "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==",
-      "dev": true,
-      "requires": {
-        "remark": "^10.0.1",
-        "unist-util-find-all-after": "^1.0.2"
-      }
-    },
     "postcss-media-query-parser": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
@@ -12814,15 +13351,43 @@
       }
     },
     "postcss-modules-local-by-default": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
-      "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
+      "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
       "dev": true,
       "requires": {
         "icss-utils": "^4.1.1",
-        "postcss": "^7.0.16",
+        "postcss": "^7.0.32",
         "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.0"
+        "postcss-value-parser": "^4.1.0"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "7.0.32",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+          "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
       }
     },
     "postcss-modules-scope": {
@@ -13108,12 +13673,12 @@
       }
     },
     "postcss-scss": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.0.0.tgz",
-      "integrity": "sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz",
+      "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.0"
+        "postcss": "^7.0.6"
       }
     },
     "postcss-selector-parser": {
@@ -13175,9 +13740,9 @@
       }
     },
     "postcss-value-parser": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
-      "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+      "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
       "dev": true
     },
     "prepend-http": {
@@ -13203,25 +13768,19 @@
       "dev": true
     },
     "primeng": {
-      "version": "9.0.6",
-      "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.6.tgz",
-      "integrity": "sha512-RGVTkXwHTb7609zTU/uJFYdbJV124kOwrMiwnHjFn6UkwmS3yTX0Kkr21v8KOTJqsKLq3OWVYhkOwvUklipAAg=="
+      "version": "9.1.3",
+      "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.1.3.tgz",
+      "integrity": "sha512-5+XGWrLNYToMIXR/r+sMcGAgz/rSYjo6Ms8rygV5uuLmHNB+mXpaRxMCajKSnmVFLZPeyATtVRm9RcA4Y/VizQ=="
     },
     "prismjs": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.19.0.tgz",
-      "integrity": "sha512-IVFtbW9mCWm9eOIaEkNyo2Vl4NnEifis2GQ7/MLRG5TQe6t+4Sj9J5QWI9i3v+SS43uZBlCAOn+zYTVYQcPXJw==",
+      "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz",
+      "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==",
       "dev": true,
       "requires": {
         "clipboard": "^2.0.0"
       }
     },
-    "private": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
-      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
-      "dev": true
-    },
     "process": {
       "version": "0.11.10",
       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -13240,15 +13799,6 @@
       "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
       "dev": true
     },
-    "proj4": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.6.1.tgz",
-      "integrity": "sha512-RP5EcrfrLcARy+Zjjz1wIeqZzZdPtQNl685asHcwdU/MQ/dvydmf1XWM4mgok6wPaNsXZ8IFrM4qadO3g46PiQ==",
-      "requires": {
-        "mgrs": "1.0.0",
-        "wkt-parser": "^1.2.4"
-      }
-    },
     "promise": {
       "version": "7.3.1",
       "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -13319,18 +13869,27 @@
       }
     },
     "property-information": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.4.0.tgz",
-      "integrity": "sha512-nmMWAm/3vKFGmmOWOcdLjgq/Hlxa+hsuR/px1Lp/UGEyc5A22A6l78Shc2C0E71sPmAqglni+HrS7L7VJ7AUCA==",
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.5.0.tgz",
+      "integrity": "sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA==",
       "dev": true,
       "requires": {
         "xtend": "^4.0.0"
       }
     },
+    "protoduck": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
+      "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==",
+      "dev": true,
+      "requires": {
+        "genfun": "^5.0.0"
+      }
+    },
     "protractor": {
-      "version": "5.4.3",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz",
-      "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz",
+      "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==",
       "dev": true,
       "requires": {
         "@types/q": "^0.0.32",
@@ -13341,13 +13900,13 @@
         "glob": "^7.0.3",
         "jasmine": "2.8.0",
         "jasminewd2": "^2.1.0",
-        "optimist": "~0.6.0",
         "q": "1.4.1",
         "saucelabs": "^1.5.0",
         "selenium-webdriver": "3.6.0",
         "source-map-support": "~0.4.0",
         "webdriver-js-extender": "2.1.0",
-        "webdriver-manager": "^12.0.6"
+        "webdriver-manager": "^12.1.7",
+        "yargs": "^15.3.1"
       },
       "dependencies": {
         "@types/q": {
@@ -13356,12 +13915,27 @@
           "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
           "dev": true
         },
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+          "dev": true
+        },
         "ansi-styles": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
           "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
           "dev": true
         },
+        "array-union": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+          "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+          "dev": true,
+          "requires": {
+            "array-uniq": "^1.0.1"
+          }
+        },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -13375,6 +13949,43 @@
             "supports-color": "^2.0.0"
           }
         },
+        "cliui": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+          "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^6.2.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "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,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
         "del": {
           "version": "2.2.2",
           "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
@@ -13390,6 +14001,22 @@
             "rimraf": "^2.2.8"
           }
         },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
         "globby": {
           "version": "5.0.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
@@ -13404,6 +14031,12 @@
             "pinkie-promise": "^2.0.0"
           }
         },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
         "is-path-cwd": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
@@ -13428,6 +14061,30 @@
             "path-is-inside": "^1.0.1"
           }
         },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        },
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -13470,6 +14127,28 @@
             "source-map": "^0.5.6"
           }
         },
+        "string-width": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
         "supports-color": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -13494,6 +14173,67 @@
             "semver": "^5.3.0",
             "xml2js": "^0.4.17"
           }
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "4.2.1",
+              "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+              "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+              "dev": true,
+              "requires": {
+                "@types/color-name": "^1.1.1",
+                "color-convert": "^2.0.1"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.0"
+              }
+            }
+          }
+        },
+        "yargs": {
+          "version": "15.4.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+          "dev": true,
+          "requires": {
+            "cliui": "^6.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^4.1.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^4.2.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^18.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "18.1.3",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
         }
       }
     },
@@ -13519,12 +14259,6 @@
       "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
       "dev": true
     },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
-    },
     "psl": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
@@ -13543,6 +14277,14 @@
         "parse-asn1": "^5.0.0",
         "randombytes": "^2.0.1",
         "safe-buffer": "^5.1.2"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "pump": {
@@ -13585,9 +14327,9 @@
       "dev": true
     },
     "puppeteer": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-3.1.0.tgz",
-      "integrity": "sha512-jLa9sqdVx0tPnr2FcwAq+8DSjGhSM4YpkwOf3JE22Ycyqm71SW7B5uGfTyMGFoLCmbCozbLZclCjasPb0flTRw==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-3.3.0.tgz",
+      "integrity": "sha512-23zNqRltZ1PPoK28uRefWJ/zKb5Jhnzbbwbpcna2o5+QMn17F0khq5s1bdH3vPlyj+J36pubccR8wiNA/VE0Vw==",
       "dev": true,
       "requires": {
         "debug": "^4.1.0",
@@ -13625,9 +14367,9 @@
           "dev": true
         },
         "ws": {
-          "version": "7.3.0",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz",
-          "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==",
+          "version": "7.3.1",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
+          "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
           "dev": true
         }
       }
@@ -13788,9 +14530,9 @@
       }
     },
     "react-color": {
-      "version": "2.18.0",
-      "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.18.0.tgz",
-      "integrity": "sha512-FyVeU1kQiSokWc8NPz22azl1ezLpJdUyTbWL0LPUpcuuYDrZ/Y1veOk9rRK5B3pMlyDGvTk4f4KJhlkIQNRjEA==",
+      "version": "2.18.1",
+      "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.18.1.tgz",
+      "integrity": "sha512-X5XpyJS6ncplZs74ak0JJoqPi+33Nzpv5RYWWxn17bslih+X7OlgmfpmGC1fNvdkK7/SGWYf1JJdn7D2n5gSuQ==",
       "dev": true,
       "requires": {
         "@icons/material": "^0.2.4",
@@ -13843,6 +14585,12 @@
             "@babel/highlight": "^7.0.0"
           }
         },
+        "@nodelib/fs.stat": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+          "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+          "dev": true
+        },
         "ansi-escapes": {
           "version": "3.2.0",
           "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
@@ -13850,9 +14598,9 @@
           "dev": true
         },
         "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
         "anymatch": {
@@ -13876,6 +14624,15 @@
             }
           }
         },
+        "array-union": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+          "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+          "dev": true,
+          "requires": {
+            "array-uniq": "^1.0.1"
+          }
+        },
         "binary-extensions": {
           "version": "1.13.1",
           "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
@@ -13898,6 +14655,17 @@
             "snapdragon-node": "^2.0.1",
             "split-string": "^3.0.2",
             "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "browserslist": {
@@ -13975,13 +14743,18 @@
           "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
           "dev": true
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+        "fast-glob": {
+          "version": "2.2.7",
+          "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
+          "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
           "dev": true,
           "requires": {
-            "is-extendable": "^0.1.0"
+            "@mrmlnc/readdir-enhanced": "^2.2.1",
+            "@nodelib/fs.stat": "^1.1.2",
+            "glob-parent": "^3.1.0",
+            "is-glob": "^4.0.0",
+            "merge2": "^1.2.3",
+            "micromatch": "^3.1.10"
           }
         },
         "figures": {
@@ -14003,15 +14776,17 @@
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1",
             "to-regex-range": "^2.1.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "fork-ts-checker-webpack-plugin": {
@@ -14031,553 +14806,34 @@
           }
         },
         "fsevents": {
-          "version": "1.2.12",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
-          "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
+          "version": "1.2.13",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
           "dev": true,
           "optional": true,
           "requires": {
             "bindings": "^1.5.0",
-            "nan": "^2.12.1",
-            "node-pre-gyp": "*"
+            "nan": "^2.12.1"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
           },
           "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
               "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-              }
-            },
-            "chownr": {
-              "version": "1.1.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "3.2.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "deep-extend": {
-              "version": "0.6.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.6.0"
-              }
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-              }
-            },
-            "glob": {
-              "version": "7.1.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            },
-            "has-unicode": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "iconv-lite": {
-              "version": "0.4.24",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-              }
-            },
-            "ignore-walk": {
-              "version": "3.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimatch": "^3.0.4"
-              }
-            },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-              }
-            },
-            "inherits": {
-              "version": "2.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "number-is-nan": "^1.0.0"
-              }
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "brace-expansion": "^1.1.7"
-              }
-            },
-            "minimist": {
-              "version": "1.2.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minipass": {
-              "version": "2.9.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.0"
-              }
-            },
-            "minizlib": {
-              "version": "1.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.9.0"
-              }
-            },
-            "mkdirp": {
-              "version": "0.5.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimist": "^1.2.5"
-              }
-            },
-            "ms": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^3.2.6",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.14.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.1",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.2.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4.4.2"
-              }
-            },
-            "nopt": {
-              "version": "4.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
-              }
-            },
-            "npm-bundled": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npm-normalize-package-bin": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.4.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1",
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
-              }
-            },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "wrappy": "1"
-              }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-              }
-            },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              }
-            },
-            "readable-stream": {
-              "version": "2.3.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-              }
-            },
-            "rimraf": {
-              "version": "2.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            },
-            "safe-buffer": {
-              "version": "5.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.13",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.1.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.8.6",
-                "minizlib": "^1.2.1",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.3"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2 || 2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "yallist": {
-              "version": "3.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
             }
           }
         },
@@ -14596,6 +14852,12 @@
             "slash": "^1.0.0"
           }
         },
+        "ignore": {
+          "version": "3.3.10",
+          "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+          "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+          "dev": true
+        },
         "inquirer": {
           "version": "6.5.0",
           "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz",
@@ -14633,6 +14895,17 @@
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
           }
         },
         "is-wsl": {
@@ -14650,15 +14923,6 @@
             "minimist": "^1.2.0"
           }
         },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        },
         "loader-utils": {
           "version": "1.2.3",
           "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
@@ -14670,14 +14934,25 @@
             "json5": "^1.0.1"
           }
         },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
           "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
         "mimic-fn": {
@@ -14716,30 +14991,15 @@
             "is-wsl": "^1.1.0"
           }
         },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "p-locate": {
+        "path-type": {
           "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
           "dev": true,
           "requires": {
-            "p-limit": "^2.0.0"
+            "pify": "^3.0.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
         "pify": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -14773,6 +15033,33 @@
           "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
           "dev": true
         },
+        "slash": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+          "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
         "strip-ansi": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -14780,6 +15067,14 @@
           "dev": true,
           "requires": {
             "ansi-regex": "^4.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            }
           }
         },
         "to-regex-range": {
@@ -14807,9 +15102,9 @@
       }
     },
     "react-draggable": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.2.0.tgz",
-      "integrity": "sha512-5wFq//gEoeTYprnd4ze8GrFc+Rbnx+9RkOMR3vk4EbWxj02U6L6T3yrlKeiw4X5CtjD2ma2+b3WujghcXNRzkw==",
+      "version": "4.4.3",
+      "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.3.tgz",
+      "integrity": "sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w==",
       "dev": true,
       "requires": {
         "classnames": "^2.2.5",
@@ -14823,19 +15118,19 @@
       "dev": true
     },
     "react-fast-compare": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
-      "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+      "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==",
       "dev": true
     },
     "react-focus-lock": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.2.1.tgz",
-      "integrity": "sha512-47g0xYcCTZccdzKRGufepY8oZ3W1Qg+2hn6u9SHZ0zUB6uz/4K4xJe7yYFNZ1qT6m+2JDm82F6QgKeBTbjW4PQ==",
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.4.1.tgz",
+      "integrity": "sha512-c5ZP56KSpj9EAxzScTqQO7bQQNPltf/W1ZEBDqNDOV1XOIwvAyHX0O7db9ekiAtxyKgnqZjQlLppVg94fUeL9w==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.0.0",
-        "focus-lock": "^0.6.6",
+        "focus-lock": "^0.7.0",
         "prop-types": "^15.6.2",
         "react-clientside-effect": "^1.2.2",
         "use-callback-ref": "^1.2.1",
@@ -14843,15 +15138,15 @@
       }
     },
     "react-helmet-async": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.4.tgz",
-      "integrity": "sha512-KTGHE9sz8N7+fCkZ2a3vzXH9eIkiTNhL2NhKR7XzzQl3WsGlCHh76arauJUIiGdfhjeMp7DY7PkASAmYFXeJYg==",
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.6.tgz",
+      "integrity": "sha512-t+bhAI4NgxfEv8ez4r77cLfR4O4Z55E/FH2DT+uiE4U7yfWgAk7OAOi7IxHxuYEVLI26bqjZvlVCkpC5/5AoNA==",
       "dev": true,
       "requires": {
-        "@babel/runtime": "^7.3.4",
+        "@babel/runtime": "^7.9.2",
         "invariant": "^2.2.4",
         "prop-types": "^15.7.2",
-        "react-fast-compare": "^2.0.4",
+        "react-fast-compare": "^3.0.1",
         "shallowequal": "^1.1.0"
       }
     },
@@ -14973,9 +15268,9 @@
       }
     },
     "react-transition-group": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.3.0.tgz",
-      "integrity": "sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==",
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",
+      "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.5.5",
@@ -15046,16 +15341,6 @@
         "npm-normalize-package-bin": "^1.0.0"
       }
     },
-    "read-package-json-fast": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz",
-      "integrity": "sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg==",
-      "dev": true,
-      "requires": {
-        "json-parse-even-better-errors": "^2.0.1",
-        "npm-normalize-package-bin": "^1.0.1"
-      }
-    },
     "read-package-tree": {
       "version": "5.3.1",
       "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
@@ -15080,9 +15365,9 @@
       },
       "dependencies": {
         "parse-json": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
-          "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
+          "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.0.0",
@@ -15129,15 +15414,6 @@
             "p-locate": "^4.1.0"
           }
         },
-        "p-limit": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
         "p-locate": {
           "version": "4.1.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
@@ -15147,12 +15423,6 @@
             "p-limit": "^2.2.0"
           }
         },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        },
         "path-exists": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -15195,12 +15465,12 @@
       }
     },
     "readdirp": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
-      "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+      "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
       "dev": true,
       "requires": {
-        "picomatch": "^2.0.7"
+        "picomatch": "^2.2.1"
       }
     },
     "rechoir": {
@@ -15260,9 +15530,9 @@
       }
     },
     "regenerate": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
-      "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz",
+      "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==",
       "dev": true
     },
     "regenerate-unicode-properties": {
@@ -15281,13 +15551,12 @@
       "dev": true
     },
     "regenerator-transform": {
-      "version": "0.14.4",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
-      "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==",
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
+      "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
       "dev": true,
       "requires": {
-        "@babel/runtime": "^7.8.4",
-        "private": "^0.1.8"
+        "@babel/runtime": "^7.8.4"
       }
     },
     "regex-not": {
@@ -15325,9 +15594,9 @@
       }
     },
     "regjsgen": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
-      "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
+      "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
       "dev": true
     },
     "regjsparser": {
@@ -15354,43 +15623,60 @@
       "dev": true
     },
     "remark": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz",
-      "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==",
+      "version": "12.0.1",
+      "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz",
+      "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==",
       "dev": true,
       "requires": {
-        "remark-parse": "^6.0.0",
-        "remark-stringify": "^6.0.0",
-        "unified": "^7.0.0"
+        "remark-parse": "^8.0.0",
+        "remark-stringify": "^8.0.0",
+        "unified": "^9.0.0"
       }
     },
     "remark-parse": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz",
-      "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==",
+      "version": "8.0.3",
+      "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz",
+      "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==",
       "dev": true,
       "requires": {
+        "ccount": "^1.0.0",
         "collapse-white-space": "^1.0.2",
         "is-alphabetical": "^1.0.0",
         "is-decimal": "^1.0.0",
         "is-whitespace-character": "^1.0.0",
         "is-word-character": "^1.0.0",
         "markdown-escapes": "^1.0.0",
-        "parse-entities": "^1.1.0",
+        "parse-entities": "^2.0.0",
         "repeat-string": "^1.5.4",
         "state-toggle": "^1.0.0",
         "trim": "0.0.1",
         "trim-trailing-lines": "^1.0.0",
         "unherit": "^1.0.4",
-        "unist-util-remove-position": "^1.0.0",
-        "vfile-location": "^2.0.0",
+        "unist-util-remove-position": "^2.0.0",
+        "vfile-location": "^3.0.0",
         "xtend": "^4.0.1"
+      },
+      "dependencies": {
+        "parse-entities": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+          "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+          "dev": true,
+          "requires": {
+            "character-entities": "^1.0.0",
+            "character-entities-legacy": "^1.0.0",
+            "character-reference-invalid": "^1.0.0",
+            "is-alphanumerical": "^1.0.0",
+            "is-decimal": "^1.0.0",
+            "is-hexadecimal": "^1.0.0"
+          }
+        }
       }
     },
     "remark-stringify": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz",
-      "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==",
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz",
+      "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==",
       "dev": true,
       "requires": {
         "ccount": "^1.0.0",
@@ -15399,14 +15685,30 @@
         "is-whitespace-character": "^1.0.0",
         "longest-streak": "^2.0.1",
         "markdown-escapes": "^1.0.0",
-        "markdown-table": "^1.1.0",
-        "mdast-util-compact": "^1.0.0",
-        "parse-entities": "^1.0.2",
+        "markdown-table": "^2.0.0",
+        "mdast-util-compact": "^2.0.0",
+        "parse-entities": "^2.0.0",
         "repeat-string": "^1.5.4",
         "state-toggle": "^1.0.0",
-        "stringify-entities": "^1.0.1",
+        "stringify-entities": "^3.0.0",
         "unherit": "^1.0.4",
         "xtend": "^4.0.1"
+      },
+      "dependencies": {
+        "parse-entities": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+          "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+          "dev": true,
+          "requires": {
+            "character-entities": "^1.0.0",
+            "character-entities-legacy": "^1.0.0",
+            "character-reference-invalid": "^1.0.0",
+            "is-alphanumerical": "^1.0.0",
+            "is-decimal": "^1.0.0",
+            "is-hexadecimal": "^1.0.0"
+          }
+        }
       }
     },
     "remove-trailing-separator": {
@@ -15511,9 +15813,9 @@
       "dev": true
     },
     "require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
       "dev": true
     },
     "requires-port": {
@@ -15529,9 +15831,9 @@
       "dev": true
     },
     "resolve": {
-      "version": "1.15.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
-      "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+      "version": "1.17.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+      "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
       "dev": true,
       "requires": {
         "path-parse": "^1.0.6"
@@ -15633,13 +15935,10 @@
       }
     },
     "run-async": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz",
-      "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==",
-      "dev": true,
-      "requires": {
-        "is-promise": "^2.1.0"
-      }
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+      "dev": true
     },
     "run-parallel": {
       "version": "1.1.9",
@@ -15657,9 +15956,9 @@
       }
     },
     "rxjs": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
-      "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
+      "version": "6.5.5",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
+      "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
       "requires": {
         "tslib": "^1.9.0"
       }
@@ -15742,36 +16041,6 @@
       "dev": true,
       "requires": {
         "https-proxy-agent": "^2.2.1"
-      },
-      "dependencies": {
-        "agent-base": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
-          "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-          "dev": true,
-          "requires": {
-            "es6-promisify": "^5.0.0"
-          }
-        },
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
-          "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
-          "dev": true,
-          "requires": {
-            "agent-base": "^4.3.0",
-            "debug": "^3.1.0"
-          }
-        }
       }
     },
     "sax": {
@@ -15796,12 +16065,13 @@
       }
     },
     "schema-utils": {
-      "version": "2.6.5",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
-      "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+      "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
       "dev": true,
       "requires": {
-        "ajv": "^6.12.0",
+        "@types/json-schema": "^7.0.4",
+        "ajv": "^6.12.2",
         "ajv-keywords": "^3.4.1"
       }
     },
@@ -15958,10 +16228,13 @@
       }
     },
     "serialize-javascript": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
-      "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
-      "dev": true
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
     },
     "serve-favicon": {
       "version": "2.5.0",
@@ -16158,9 +16431,9 @@
       "dev": true
     },
     "shelljs": {
-      "version": "0.8.3",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz",
-      "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==",
+      "version": "0.8.4",
+      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
+      "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
       "dev": true,
       "requires": {
         "glob": "^7.0.0",
@@ -16169,9 +16442,9 @@
       },
       "dependencies": {
         "interpret": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
-          "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+          "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
           "dev": true
         }
       }
@@ -16234,9 +16507,9 @@
       }
     },
     "slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "dev": true
     },
     "slice-ansi": {
@@ -16391,34 +16664,17 @@
       }
     },
     "socket.io": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
-      "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz",
+      "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==",
       "dev": true,
       "requires": {
-        "debug": "~3.1.0",
-        "engine.io": "~3.2.0",
+        "debug": "~4.1.0",
+        "engine.io": "~3.4.0",
         "has-binary2": "~1.0.2",
         "socket.io-adapter": "~1.1.0",
-        "socket.io-client": "2.1.1",
-        "socket.io-parser": "~3.2.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        }
+        "socket.io-client": "2.3.0",
+        "socket.io-parser": "~3.4.0"
       }
     },
     "socket.io-adapter": {
@@ -16428,24 +16684,24 @@
       "dev": true
     },
     "socket.io-client": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
-      "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz",
+      "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==",
       "dev": true,
       "requires": {
         "backo2": "1.0.2",
         "base64-arraybuffer": "0.1.5",
         "component-bind": "1.0.0",
         "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
-        "engine.io-client": "~3.2.0",
+        "debug": "~4.1.0",
+        "engine.io-client": "~3.4.0",
         "has-binary2": "~1.0.2",
         "has-cors": "1.1.0",
         "indexof": "0.0.1",
         "object-component": "0.0.3",
         "parseqs": "0.0.5",
         "parseuri": "0.0.5",
-        "socket.io-parser": "~3.2.0",
+        "socket.io-parser": "~3.3.0",
         "to-array": "0.1.4"
       },
       "dependencies": {
@@ -16455,49 +16711,6 @@
           "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
           "dev": true
         },
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        }
-      }
-    },
-    "socket.io-parser": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
-      "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
-      "dev": true,
-      "requires": {
-        "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
-        "isarray": "2.0.1"
-      },
-      "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-          "dev": true
-        },
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
         "isarray": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
@@ -16509,17 +16722,65 @@
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
           "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
           "dev": true
+        },
+        "socket.io-parser": {
+          "version": "3.3.0",
+          "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
+          "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
+          "dev": true,
+          "requires": {
+            "component-emitter": "1.2.1",
+            "debug": "~3.1.0",
+            "isarray": "2.0.1"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+              "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+              "dev": true,
+              "requires": {
+                "ms": "2.0.0"
+              }
+            }
+          }
+        }
+      }
+    },
+    "socket.io-parser": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
+      "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
+      "dev": true,
+      "requires": {
+        "component-emitter": "1.2.1",
+        "debug": "~4.1.0",
+        "isarray": "2.0.1"
+      },
+      "dependencies": {
+        "component-emitter": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+          "dev": true
+        },
+        "isarray": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+          "dev": true
         }
       }
     },
     "sockjs": {
-      "version": "0.3.19",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
-      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "version": "0.3.20",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
+      "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
       "dev": true,
       "requires": {
         "faye-websocket": "^0.10.0",
-        "uuid": "^3.0.1"
+        "uuid": "^3.4.0",
+        "websocket-driver": "0.6.5"
       }
     },
     "sockjs-client": {
@@ -16567,14 +16828,24 @@
       }
     },
     "socks-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
+      "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
       "dev": true,
       "requires": {
-        "agent-base": "6",
-        "debug": "4",
-        "socks": "^2.3.3"
+        "agent-base": "~4.2.1",
+        "socks": "~2.3.2"
+      },
+      "dependencies": {
+        "agent-base": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+          "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+          "dev": true,
+          "requires": {
+            "es6-promisify": "^5.0.0"
+          }
+        }
       }
     },
     "sonar-scanner": {
@@ -16650,9 +16921,9 @@
       }
     },
     "source-map-support": {
-      "version": "0.5.16",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+      "version": "0.5.19",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
       "dev": true,
       "requires": {
         "buffer-from": "^1.0.0",
@@ -16702,9 +16973,9 @@
       }
     },
     "spdx-correct": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
-      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
       "dev": true,
       "requires": {
         "spdx-expression-parse": "^3.0.0",
@@ -16712,15 +16983,15 @@
       }
     },
     "spdx-exceptions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
-      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
       "dev": true
     },
     "spdx-expression-parse": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
-      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
       "dev": true,
       "requires": {
         "spdx-exceptions": "^2.1.0",
@@ -16751,9 +17022,9 @@
       }
     },
     "spdy": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
-      "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
       "dev": true,
       "requires": {
         "debug": "^4.1.0",
@@ -16886,9 +17157,9 @@
       "dev": true
     },
     "store2": {
-      "version": "2.11.0",
-      "resolved": "https://registry.npmjs.org/store2/-/store2-2.11.0.tgz",
-      "integrity": "sha512-WeIZ5+c/KzBSutSqOjUCAkk1qTLVBcYUuvrhNx8ndjLZKdZRfP6Vv7AOxlynuL6tVU/6zt6e2CTHwWI5KE+fKg==",
+      "version": "2.11.2",
+      "resolved": "https://registry.npmjs.org/store2/-/store2-2.11.2.tgz",
+      "integrity": "sha512-TQMKs+C6n9idtzLpxluikmDCYiDJrTbbIGn9LFxMg0BVTu+8JZKSlXTWYRpOFKlfKD5HlDWLVpJJyNGZ2e9l1A==",
       "dev": true
     },
     "stream-browserify": {
@@ -16931,34 +17202,29 @@
       "dev": true
     },
     "streamroller": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz",
-      "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==",
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz",
+      "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==",
       "dev": true,
       "requires": {
-        "async": "^2.6.2",
-        "date-format": "^2.0.0",
-        "debug": "^3.2.6",
-        "fs-extra": "^7.0.1",
-        "lodash": "^4.17.14"
+        "date-format": "^2.1.0",
+        "debug": "^4.1.1",
+        "fs-extra": "^8.1.0"
       },
       "dependencies": {
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
+        "date-format": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
+          "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==",
+          "dev": true
         },
         "fs-extra": {
-          "version": "7.0.1",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.1.2",
+            "graceful-fs": "^4.2.0",
             "jsonfile": "^4.0.0",
             "universalify": "^0.1.0"
           }
@@ -16972,28 +17238,29 @@
       "dev": true
     },
     "string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
       "dev": true,
       "requires": {
+        "emoji-regex": "^7.0.1",
         "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
+        "strip-ansi": "^5.1.0"
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
           "dev": true
         },
         "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^3.0.0"
+            "ansi-regex": "^4.1.0"
           }
         }
       }
@@ -17033,41 +17300,19 @@
       }
     },
     "string.prototype.trimend": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz",
-      "integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
+      "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
       "dev": true,
       "requires": {
         "define-properties": "^1.1.3",
         "es-abstract": "^1.17.5"
       }
     },
-    "string.prototype.trimleft": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
-      "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.5",
-        "string.prototype.trimstart": "^1.0.0"
-      }
-    },
-    "string.prototype.trimright": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
-      "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.5",
-        "string.prototype.trimend": "^1.0.0"
-      }
-    },
     "string.prototype.trimstart": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz",
-      "integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
+      "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
       "dev": true,
       "requires": {
         "define-properties": "^1.1.3",
@@ -17084,14 +17329,15 @@
       }
     },
     "stringify-entities": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
-      "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.1.tgz",
+      "integrity": "sha512-Lsk3ISA2++eJYqBMPKcr/8eby1I6L0gP0NlxF8Zja6c05yr/yCYyb2c9PwXjd08Ib3If1vn1rbs1H5ZtVuOfvQ==",
       "dev": true,
       "requires": {
         "character-entities-html4": "^1.0.0",
         "character-entities-legacy": "^1.0.0",
         "is-alphanumerical": "^1.0.0",
+        "is-decimal": "^1.0.2",
         "is-hexadecimal": "^1.0.0"
       }
     },
@@ -17126,9 +17372,9 @@
       }
     },
     "strip-json-comments": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
-      "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
       "dev": true
     },
     "style-loader": {
@@ -17194,48 +17440,48 @@
       }
     },
     "stylelint": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.3.0.tgz",
-      "integrity": "sha512-ehNzQu9JAbxuiNhUhmoyPgMjIdz7Fg1AxC5urPVhKotto/faF5GxwljSoLvQa6pB6yd+BVuofApWjWT/6/rBMQ==",
+      "version": "13.6.1",
+      "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.6.1.tgz",
+      "integrity": "sha512-XyvKyNE7eyrqkuZ85Citd/Uv3ljGiuYHC6UiztTR6sWS9rza8j3UeQv/eGcQS9NZz/imiC4GKdk1EVL3wst5vw==",
       "dev": true,
       "requires": {
-        "autoprefixer": "^9.7.5",
+        "@stylelint/postcss-css-in-js": "^0.37.1",
+        "@stylelint/postcss-markdown": "^0.36.1",
+        "autoprefixer": "^9.8.0",
         "balanced-match": "^1.0.0",
-        "chalk": "^3.0.0",
+        "chalk": "^4.1.0",
         "cosmiconfig": "^6.0.0",
         "debug": "^4.1.1",
         "execall": "^2.0.0",
         "file-entry-cache": "^5.0.1",
-        "get-stdin": "^7.0.0",
+        "get-stdin": "^8.0.0",
         "global-modules": "^2.0.0",
-        "globby": "^11.0.0",
+        "globby": "^11.0.1",
         "globjoin": "^0.1.4",
         "html-tags": "^3.1.0",
-        "ignore": "^5.1.4",
+        "ignore": "^5.1.8",
         "import-lazy": "^4.0.0",
         "imurmurhash": "^0.1.4",
-        "known-css-properties": "^0.18.0",
+        "known-css-properties": "^0.19.0",
         "leven": "^3.1.0",
         "lodash": "^4.17.15",
-        "log-symbols": "^3.0.0",
+        "log-symbols": "^4.0.0",
         "mathml-tag-names": "^2.1.3",
-        "meow": "^6.1.0",
+        "meow": "^7.0.1",
         "micromatch": "^4.0.2",
         "normalize-selector": "^0.2.0",
-        "postcss": "^7.0.27",
+        "postcss": "^7.0.32",
         "postcss-html": "^0.36.0",
-        "postcss-jsx": "^0.36.4",
         "postcss-less": "^3.1.4",
-        "postcss-markdown": "^0.36.0",
         "postcss-media-query-parser": "^0.2.3",
         "postcss-reporter": "^6.0.1",
         "postcss-resolve-nested-selector": "^0.1.1",
         "postcss-safe-parser": "^4.0.2",
-        "postcss-sass": "^0.4.2",
-        "postcss-scss": "^2.0.0",
+        "postcss-sass": "^0.4.4",
+        "postcss-scss": "^2.1.1",
         "postcss-selector-parser": "^6.0.2",
         "postcss-syntax": "^0.36.2",
-        "postcss-value-parser": "^4.0.3",
+        "postcss-value-parser": "^4.1.0",
         "resolve-from": "^5.0.0",
         "slash": "^3.0.0",
         "specificity": "^0.4.1",
@@ -17245,60 +17491,35 @@
         "sugarss": "^2.0.0",
         "svg-tags": "^1.0.0",
         "table": "^5.4.6",
-        "v8-compile-cache": "^2.1.0",
+        "v8-compile-cache": "^2.1.1",
         "write-file-atomic": "^3.0.3"
       },
       "dependencies": {
-        "@nodelib/fs.stat": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
-          "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
-          "dev": true
-        },
         "ansi-regex": {
           "version": "5.0.0",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
           "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
           "dev": true
         },
-        "array-union": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-          "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-          "dev": true
-        },
         "autoprefixer": {
-          "version": "9.7.5",
-          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.5.tgz",
-          "integrity": "sha512-URo6Zvt7VYifomeAfJlMFnYDhow1rk2bufwkbamPEAtQFcL11moLk4PnR7n9vlu7M+BkXAZkHFA0mIcY7tjQFg==",
+          "version": "9.8.6",
+          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
+          "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
           "dev": true,
           "requires": {
-            "browserslist": "^4.11.0",
-            "caniuse-lite": "^1.0.30001036",
-            "chalk": "^2.4.2",
+            "browserslist": "^4.12.0",
+            "caniuse-lite": "^1.0.30001109",
+            "colorette": "^1.2.1",
             "normalize-range": "^0.1.2",
             "num2fraction": "^1.2.2",
-            "postcss": "^7.0.27",
-            "postcss-value-parser": "^4.0.3"
-          },
-          "dependencies": {
-            "chalk": {
-              "version": "2.4.2",
-              "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-              "dev": true,
-              "requires": {
-                "ansi-styles": "^3.2.1",
-                "escape-string-regexp": "^1.0.5",
-                "supports-color": "^5.3.0"
-              }
-            }
+            "postcss": "^7.0.32",
+            "postcss-value-parser": "^4.1.0"
           }
         },
         "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+          "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
           "dev": true,
           "requires": {
             "ansi-styles": "^4.1.0",
@@ -17315,6 +17536,12 @@
                 "color-convert": "^2.0.1"
               }
             },
+            "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
+            },
             "supports-color": {
               "version": "7.1.0",
               "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
@@ -17354,62 +17581,10 @@
             "yaml": "^1.7.2"
           }
         },
-        "dir-glob": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-          "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-          "dev": true,
-          "requires": {
-            "path-type": "^4.0.0"
-          }
-        },
-        "fast-glob": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz",
-          "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==",
-          "dev": true,
-          "requires": {
-            "@nodelib/fs.stat": "^2.0.2",
-            "@nodelib/fs.walk": "^1.2.3",
-            "glob-parent": "^5.1.0",
-            "merge2": "^1.3.0",
-            "micromatch": "^4.0.2",
-            "picomatch": "^2.2.1"
-          }
-        },
-        "glob-parent": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
-          "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        },
-        "globby": {
-          "version": "11.0.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz",
-          "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==",
-          "dev": true,
-          "requires": {
-            "array-union": "^2.1.0",
-            "dir-glob": "^3.0.1",
-            "fast-glob": "^3.1.1",
-            "ignore": "^5.1.4",
-            "merge2": "^1.3.0",
-            "slash": "^3.0.0"
-          }
-        },
-        "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
-        },
-        "ignore": {
-          "version": "5.1.4",
-          "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
-          "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
           "dev": true
         },
         "import-fresh": {
@@ -17436,20 +17611,19 @@
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
-        "micromatch": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-          "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+        "log-symbols": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
+          "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
           "dev": true,
           "requires": {
-            "braces": "^3.0.1",
-            "picomatch": "^2.0.5"
+            "chalk": "^4.0.0"
           }
         },
         "parse-json": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
-          "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
+          "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.0.0",
@@ -17458,11 +17632,40 @@
             "lines-and-columns": "^1.1.6"
           }
         },
-        "path-type": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-          "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-          "dev": true
+        "postcss": {
+          "version": "7.0.32",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+          "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "2.4.2",
+              "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+              "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+              "dev": true,
+              "requires": {
+                "ansi-styles": "^3.2.1",
+                "escape-string-regexp": "^1.0.5",
+                "supports-color": "^5.3.0"
+              },
+              "dependencies": {
+                "supports-color": {
+                  "version": "5.5.0",
+                  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+                  "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+                  "dev": true,
+                  "requires": {
+                    "has-flag": "^3.0.0"
+                  }
+                }
+              }
+            }
+          }
         },
         "resolve-from": {
           "version": "5.0.0",
@@ -17470,10 +17673,10 @@
           "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
           "dev": true
         },
-        "slash": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-          "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
         "string-width": {
@@ -17495,6 +17698,15 @@
           "requires": {
             "ansi-regex": "^5.0.0"
           }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
         }
       }
     },
@@ -17509,27 +17721,55 @@
       }
     },
     "stylelint-order": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.0.0.tgz",
-      "integrity": "sha512-bXV0v+jfB0+JKsqIn3mLglg1Dj2QCYkFHNfL1c+rVMEmruZmW5LUqT/ARBERfBm8SFtCuXpEdatidw/3IkcoiA==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-4.1.0.tgz",
+      "integrity": "sha512-sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==",
       "dev": true,
       "requires": {
         "lodash": "^4.17.15",
-        "postcss": "^7.0.26",
+        "postcss": "^7.0.31",
         "postcss-sorting": "^5.0.1"
+      },
+      "dependencies": {
+        "postcss": {
+          "version": "7.0.32",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+          "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
       }
     },
     "stylelint-scss": {
-      "version": "3.16.0",
-      "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.16.0.tgz",
-      "integrity": "sha512-dAWs/gagdPYO3VDdvgRv5drRBMcWI4E//z3AXPAY1qYkSdXCEVJtEW+R9JtinG0U2rcJIu5XWaVddPQeaaufzw==",
+      "version": "3.18.0",
+      "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.18.0.tgz",
+      "integrity": "sha512-LD7+hv/6/ApNGt7+nR/50ft7cezKP2HM5rI8avIdGaUWre3xlHfV4jKO/DRZhscfuN+Ewy9FMhcTq0CcS0C/SA==",
       "dev": true,
       "requires": {
         "lodash": "^4.17.15",
         "postcss-media-query-parser": "^0.2.3",
         "postcss-resolve-nested-selector": "^0.1.1",
         "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
+        "postcss-value-parser": "^4.1.0"
       }
     },
     "stylus": {
@@ -17675,40 +17915,6 @@
         "lodash": "^4.17.14",
         "slice-ansi": "^2.1.0",
         "string-width": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
       }
     },
     "tapable": {
@@ -17718,12 +17924,12 @@
       "dev": true
     },
     "tar": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.1.tgz",
-      "integrity": "sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==",
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz",
+      "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==",
       "dev": true,
       "requires": {
-        "chownr": "^1.1.3",
+        "chownr": "^2.0.0",
         "fs-minipass": "^2.0.0",
         "minipass": "^3.0.0",
         "minizlib": "^2.1.0",
@@ -17731,10 +17937,16 @@
         "yallist": "^4.0.0"
       },
       "dependencies": {
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
         "mkdirp": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz",
-          "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==",
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
           "dev": true
         }
       }
@@ -17752,9 +17964,9 @@
       }
     },
     "tar-stream": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz",
-      "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==",
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz",
+      "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==",
       "dev": true,
       "requires": {
         "bl": "^4.0.1",
@@ -17808,9 +18020,9 @@
       "dev": true
     },
     "terser": {
-      "version": "4.6.7",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz",
-      "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==",
+      "version": "4.6.10",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz",
+      "integrity": "sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==",
       "dev": true,
       "requires": {
         "commander": "^2.20.0",
@@ -17827,70 +18039,101 @@
       }
     },
     "terser-webpack-plugin": {
-      "version": "2.3.5",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz",
-      "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.3.tgz",
+      "integrity": "sha512-bZFnotuIKq5Rqzrs+qIwFzGdKdffV9epG5vDSEbYzvKAhPeR5RbbrQysfPgbIIMhNAQtZD2hGwBfSKUXjXZZZw==",
       "dev": true,
       "requires": {
-        "cacache": "^13.0.1",
-        "find-cache-dir": "^3.2.0",
-        "jest-worker": "^25.1.0",
-        "p-limit": "^2.2.2",
-        "schema-utils": "^2.6.4",
-        "serialize-javascript": "^2.1.2",
+        "cacache": "^15.0.4",
+        "find-cache-dir": "^3.3.1",
+        "jest-worker": "^26.0.0",
+        "p-limit": "^2.3.0",
+        "schema-utils": "^2.6.6",
+        "serialize-javascript": "^3.1.0",
         "source-map": "^0.6.1",
-        "terser": "^4.4.3",
+        "terser": "^4.6.13",
         "webpack-sources": "^1.4.3"
       },
       "dependencies": {
         "cacache": {
-          "version": "13.0.1",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
-          "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==",
+          "version": "15.0.5",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
+          "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
           "dev": true,
           "requires": {
-            "chownr": "^1.1.2",
-            "figgy-pudding": "^3.5.1",
+            "@npmcli/move-file": "^1.0.1",
+            "chownr": "^2.0.0",
             "fs-minipass": "^2.0.0",
             "glob": "^7.1.4",
-            "graceful-fs": "^4.2.2",
             "infer-owner": "^1.0.4",
-            "lru-cache": "^5.1.1",
-            "minipass": "^3.0.0",
+            "lru-cache": "^6.0.0",
+            "minipass": "^3.1.1",
             "minipass-collect": "^1.0.2",
             "minipass-flush": "^1.0.5",
             "minipass-pipeline": "^1.2.2",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
-            "p-map": "^3.0.0",
+            "mkdirp": "^1.0.3",
+            "p-map": "^4.0.0",
             "promise-inflight": "^1.0.1",
-            "rimraf": "^2.7.1",
-            "ssri": "^7.0.0",
+            "rimraf": "^3.0.2",
+            "ssri": "^8.0.0",
+            "tar": "^6.0.2",
             "unique-filename": "^1.1.1"
           }
         },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
           "dev": true
         },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+        "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
+        },
+        "jest-worker": {
+          "version": "26.2.1",
+          "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.2.1.tgz",
+          "integrity": "sha512-+XcGMMJDTeEGncRb5M5Zq9P7K4sQ1sirhjdOxsN1462h6lFo9w59bl2LVQmdGEEeU3m+maZCkS2Tcc9SfCHO4A==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "@types/node": "*",
+            "merge-stream": "^2.0.0",
+            "supports-color": "^7.0.0"
+          }
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "p-map": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+          "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+          "dev": true,
+          "requires": {
+            "aggregate-error": "^3.0.0"
+          }
+        },
+        "serialize-javascript": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
+          "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
+          "dev": true,
+          "requires": {
+            "randombytes": "^2.1.0"
           }
         },
         "source-map": {
@@ -17899,14 +18142,24 @@
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
-        "ssri": {
+        "supports-color": {
           "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz",
-          "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+          "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
           "dev": true,
           "requires": {
-            "figgy-pudding": "^3.5.1",
-            "minipass": "^3.1.1"
+            "has-flag": "^4.0.0"
+          }
+        },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "dev": true,
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
           }
         }
       }
@@ -17918,9 +18171,9 @@
       "dev": true
     },
     "throttle-debounce": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz",
-      "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.2.1.tgz",
+      "integrity": "sha512-i9hAVld1f+woAiyNGqWelpDD5W1tpMroL3NofTz9xzwq6acWBlO2dC8k5EFSZepU6oOINtV5Q3aSPoRg7o4+fA==",
       "dev": true
     },
     "through": {
@@ -18149,16 +18402,6 @@
             "json5": "^1.0.1"
           }
         },
-        "micromatch": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-          "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
-          "dev": true,
-          "requires": {
-            "braces": "^3.0.1",
-            "picomatch": "^2.0.5"
-          }
-        },
         "semver": {
           "version": "6.3.0",
           "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -18210,9 +18453,9 @@
       }
     },
     "tsconfig-paths-webpack-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz",
-      "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.3.0.tgz",
+      "integrity": "sha512-MpQeZpwPY4gYASCUjY4yt2Zj8yv86O8f++3Ai4o0yI0fUC6G1syvnL9VuY71PBgimRYDQU47f12BEmJq9wRaSw==",
       "dev": true,
       "requires": {
         "chalk": "^2.3.0",
@@ -18221,14 +18464,14 @@
       }
     },
     "tslib": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
-      "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA=="
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+      "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
     },
     "tslint": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.0.tgz",
-      "integrity": "sha512-fXjYd/61vU6da04E505OZQGb2VCN2Mq3doeWcOIryuG+eqdmFUXTYVwdhnbEu2k46LNLgUYt9bI5icQze/j0bQ==",
+      "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz",
+      "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.0.0",
@@ -18239,10 +18482,10 @@
         "glob": "^7.1.1",
         "js-yaml": "^3.13.1",
         "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
+        "mkdirp": "^0.5.3",
         "resolve": "^1.3.2",
         "semver": "^5.3.0",
-        "tslib": "^1.10.0",
+        "tslib": "^1.13.0",
         "tsutils": "^2.29.0"
       },
       "dependencies": {
@@ -18327,10 +18570,10 @@
       "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==",
       "dev": true
     },
-    "ultron": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
-      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
+    "ua-parser-js": {
+      "version": "0.7.21",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz",
+      "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==",
       "dev": true
     },
     "unbzip2-stream": {
@@ -18400,19 +18643,31 @@
       "dev": true
     },
     "unified": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz",
-      "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/unified/-/unified-9.1.0.tgz",
+      "integrity": "sha512-VXOv7Ic6twsKGJDeZQ2wwPqXs2hM0KNu5Hkg9WgAZbSD1pxhZ7p8swqg583nw1Je2fhwHy6U8aEjiI79x1gvag==",
       "dev": true,
       "requires": {
-        "@types/unist": "^2.0.0",
-        "@types/vfile": "^3.0.0",
         "bail": "^1.0.0",
         "extend": "^3.0.0",
-        "is-plain-obj": "^1.1.0",
+        "is-buffer": "^2.0.0",
+        "is-plain-obj": "^2.0.0",
         "trough": "^1.0.0",
-        "vfile": "^3.0.0",
-        "x-is-string": "^0.1.0"
+        "vfile": "^4.0.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+          "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
+          "dev": true
+        },
+        "is-plain-obj": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+          "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+          "dev": true
+        }
       }
     },
     "union-value": {
@@ -18458,27 +18713,27 @@
       }
     },
     "unist-util-find-all-after": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz",
-      "integrity": "sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz",
+      "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==",
       "dev": true,
       "requires": {
-        "unist-util-is": "^3.0.0"
+        "unist-util-is": "^4.0.0"
       }
     },
     "unist-util-is": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz",
-      "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz",
+      "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==",
       "dev": true
     },
     "unist-util-remove-position": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
-      "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz",
+      "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==",
       "dev": true,
       "requires": {
-        "unist-util-visit": "^1.1.0"
+        "unist-util-visit": "^2.0.0"
       }
     },
     "unist-util-stringify-position": {
@@ -18491,21 +18746,24 @@
       }
     },
     "unist-util-visit": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
-      "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
+      "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
       "dev": true,
       "requires": {
-        "unist-util-visit-parents": "^2.0.0"
+        "@types/unist": "^2.0.0",
+        "unist-util-is": "^4.0.0",
+        "unist-util-visit-parents": "^3.0.0"
       }
     },
     "unist-util-visit-parents": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz",
-      "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz",
+      "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==",
       "dev": true,
       "requires": {
-        "unist-util-is": "^3.0.0"
+        "@types/unist": "^2.0.0",
+        "unist-util-is": "^4.0.0"
       }
     },
     "universal-analytics": {
@@ -18659,9 +18917,9 @@
           }
         },
         "mime": {
-          "version": "2.4.4",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+          "version": "2.4.6",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+          "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
           "dev": true
         }
       }
@@ -18683,49 +18941,21 @@
       "dev": true
     },
     "use-callback-ref": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.2.1.tgz",
-      "integrity": "sha512-C3nvxh0ZpaOxs9RCnWwAJ+7bJPwQI8LHF71LzbQ3BvzH5XkdtlkMadqElGevg5bYBDFip4sAnD4m06zAKebg1w==",
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.2.4.tgz",
+      "integrity": "sha512-rXpsyvOnqdScyied4Uglsp14qzag1JIemLeTWGKbwpotWht57hbP78aNT+Q4wdFKQfQibbUX4fb6Qb4y11aVOQ==",
       "dev": true
     },
     "use-sidecar": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.0.2.tgz",
-      "integrity": "sha512-287RZny6m5KNMTb/Kq9gmjafi7lQL0YHO1lYolU6+tY1h9+Z3uCtkJJ3OSOq3INwYf2hBryCcDh4520AhJibMA==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.0.3.tgz",
+      "integrity": "sha512-ygJwGUBeQfWgDls7uTrlEDzJUUR67L8Rm14v/KfFtYCdHhtjHZx1Krb3DIQl3/Q5dJGfXLEQ02RY8BdNBv87SQ==",
       "dev": true,
       "requires": {
-        "detect-node": "^2.0.4",
+        "detect-node-es": "^1.0.0",
         "tslib": "^1.9.3"
       }
     },
-    "useragent": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
-      "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
-      "dev": true,
-      "requires": {
-        "lru-cache": "4.1.x",
-        "tmp": "0.0.x"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "4.1.5",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-          "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-          "dev": true
-        }
-      }
-    },
     "util": {
       "version": "0.11.1",
       "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
@@ -18795,9 +19025,9 @@
       "dev": true
     },
     "v8-compile-cache": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
-      "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+      "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
       "dev": true
     },
     "validate-npm-package-license": {
@@ -18843,15 +19073,16 @@
       }
     },
     "vfile": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz",
-      "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz",
+      "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==",
       "dev": true,
       "requires": {
+        "@types/unist": "^2.0.0",
         "is-buffer": "^2.0.0",
         "replace-ext": "1.0.0",
-        "unist-util-stringify-position": "^1.0.0",
-        "vfile-message": "^1.0.0"
+        "unist-util-stringify-position": "^2.0.0",
+        "vfile-message": "^2.0.0"
       },
       "dependencies": {
         "is-buffer": {
@@ -18859,28 +19090,13 @@
           "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
           "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
           "dev": true
-        },
-        "unist-util-stringify-position": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
-          "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==",
-          "dev": true
-        },
-        "vfile-message": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
-          "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
-          "dev": true,
-          "requires": {
-            "unist-util-stringify-position": "^1.1.1"
-          }
         }
       }
     },
     "vfile-location": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
-      "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz",
+      "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==",
       "dev": true
     },
     "vfile-message": {
@@ -18915,14 +19131,25 @@
       }
     },
     "watchpack": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz",
-      "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==",
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+      "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
       "dev": true,
       "requires": {
-        "chokidar": "^2.1.8",
+        "chokidar": "^3.4.1",
         "graceful-fs": "^4.1.2",
-        "neo-async": "^2.5.0"
+        "neo-async": "^2.5.0",
+        "watchpack-chokidar2": "^2.0.0"
+      }
+    },
+    "watchpack-chokidar2": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
+      "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
       },
       "dependencies": {
         "anymatch": {
@@ -18930,6 +19157,7 @@
           "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
           "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
           "dev": true,
+          "optional": true,
           "requires": {
             "micromatch": "^3.1.4",
             "normalize-path": "^2.1.1"
@@ -18940,6 +19168,7 @@
               "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
               "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
               "dev": true,
+              "optional": true,
               "requires": {
                 "remove-trailing-separator": "^1.0.1"
               }
@@ -18950,13 +19179,15 @@
           "version": "1.13.1",
           "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
           "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "braces": {
           "version": "2.3.2",
           "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
           "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
           "dev": true,
+          "optional": true,
           "requires": {
             "arr-flatten": "^1.1.0",
             "array-unique": "^0.3.2",
@@ -18968,6 +19199,18 @@
             "snapdragon-node": "^2.0.1",
             "split-string": "^3.0.2",
             "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "chokidar": {
@@ -18975,6 +19218,7 @@
           "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
           "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
           "dev": true,
+          "optional": true,
           "requires": {
             "anymatch": "^2.0.0",
             "async-each": "^1.0.1",
@@ -18990,575 +19234,62 @@
             "upath": "^1.1.1"
           }
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
           "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
           "dev": true,
+          "optional": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1",
             "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "fsevents": {
-          "version": "1.2.12",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
-          "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
+          "version": "1.2.13",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
           "dev": true,
           "optional": true,
           "requires": {
             "bindings": "^1.5.0",
-            "nan": "^2.12.1",
-            "node-pre-gyp": "*"
+            "nan": "^2.12.1"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
           },
           "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.5",
-              "bundled": true,
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
               "optional": true,
               "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-              }
-            },
-            "chownr": {
-              "version": "1.1.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "3.2.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "deep-extend": {
-              "version": "0.6.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.6.0"
-              }
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-              }
-            },
-            "glob": {
-              "version": "7.1.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            },
-            "has-unicode": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "iconv-lite": {
-              "version": "0.4.24",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-              }
-            },
-            "ignore-walk": {
-              "version": "3.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimatch": "^3.0.4"
-              }
-            },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-              }
-            },
-            "inherits": {
-              "version": "2.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "number-is-nan": "^1.0.0"
-              }
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "brace-expansion": "^1.1.7"
-              }
-            },
-            "minimist": {
-              "version": "1.2.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minipass": {
-              "version": "2.9.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.0"
-              }
-            },
-            "minizlib": {
-              "version": "1.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.9.0"
-              }
-            },
-            "mkdirp": {
-              "version": "0.5.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimist": "^1.2.5"
-              }
-            },
-            "ms": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^3.2.6",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.14.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.1",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.2.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4.4.2"
-              }
-            },
-            "nopt": {
-              "version": "4.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
-              }
-            },
-            "npm-bundled": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npm-normalize-package-bin": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.4.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1",
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
-              }
-            },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "wrappy": "1"
-              }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-              }
-            },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              }
-            },
-            "readable-stream": {
-              "version": "2.3.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-              }
-            },
-            "rimraf": {
-              "version": "2.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            },
-            "safe-buffer": {
-              "version": "5.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.13",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.1.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.8.6",
-                "minizlib": "^1.2.1",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.3"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2 || 2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "yallist": {
-              "version": "3.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
             }
           }
         },
@@ -19567,6 +19298,7 @@
           "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
           "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
           "dev": true,
+          "optional": true,
           "requires": {
             "binary-extensions": "^1.0.0"
           }
@@ -19576,17 +19308,43 @@
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
           "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
           "dev": true,
+          "optional": true,
           "requires": {
             "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
           }
         },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
+          "optional": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
         "readdirp": {
@@ -19594,6 +19352,7 @@
           "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
           "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
           "dev": true,
+          "optional": true,
           "requires": {
             "graceful-fs": "^4.1.11",
             "micromatch": "^3.1.10",
@@ -19605,6 +19364,7 @@
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
           "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
           "dev": true,
+          "optional": true,
           "requires": {
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1"
@@ -19671,6 +19431,35 @@
         "webpack-sources": "^1.4.1"
       },
       "dependencies": {
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
         "cacache": {
           "version": "12.0.4",
           "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
@@ -19694,6 +19483,29 @@
             "y18n": "^4.0.0"
           }
         },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
         "find-cache-dir": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
@@ -19705,6 +19517,26 @@
             "pkg-dir": "^3.0.0"
           }
         },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
         "is-wsl": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
@@ -19741,6 +19573,27 @@
             "readable-stream": "^2.0.1"
           }
         },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
         "rimraf": {
           "version": "2.7.1",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -19761,6 +19614,15 @@
             "ajv-keywords": "^3.1.0"
           }
         },
+        "serialize-javascript": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
+          "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
+          "dev": true,
+          "requires": {
+            "randombytes": "^2.1.0"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -19777,28 +19639,38 @@
           }
         },
         "terser-webpack-plugin": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
-          "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
+          "version": "1.4.4",
+          "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz",
+          "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==",
           "dev": true,
           "requires": {
             "cacache": "^12.0.2",
             "find-cache-dir": "^2.1.0",
             "is-wsl": "^1.1.0",
             "schema-utils": "^1.0.0",
-            "serialize-javascript": "^2.1.2",
+            "serialize-javascript": "^3.1.0",
             "source-map": "^0.6.1",
             "terser": "^4.1.2",
             "webpack-sources": "^1.4.0",
             "worker-farm": "^1.7.0"
           }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
         }
       }
     },
     "webpack-bundle-analyzer": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.7.0.tgz",
-      "integrity": "sha512-mETdjZ30a3Yf+NTB/wqTgACK7rAYQl5uxKK0WVTNmF0sM3Uv8s3R58YZMW7Rhu0Lk2Rmuhdj5dcH5Q76zCDVdA==",
+      "version": "3.8.0",
+      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz",
+      "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==",
       "dev": true,
       "requires": {
         "acorn": "^7.1.1",
@@ -19817,9 +19689,9 @@
       },
       "dependencies": {
         "acorn": {
-          "version": "7.1.1",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
-          "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
+          "version": "7.4.0",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz",
+          "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==",
           "dev": true
         }
       }
@@ -19848,17 +19720,17 @@
           }
         },
         "mime": {
-          "version": "2.4.4",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+          "version": "2.4.6",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+          "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
           "dev": true
         }
       }
     },
     "webpack-dev-server": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz",
-      "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==",
+      "version": "3.11.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
+      "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
@@ -19869,31 +19741,31 @@
         "debug": "^4.1.1",
         "del": "^4.1.1",
         "express": "^4.17.1",
-        "html-entities": "^1.2.1",
+        "html-entities": "^1.3.1",
         "http-proxy-middleware": "0.19.1",
         "import-local": "^2.0.0",
         "internal-ip": "^4.3.0",
         "ip": "^1.1.5",
         "is-absolute-url": "^3.0.3",
         "killable": "^1.0.1",
-        "loglevel": "^1.6.6",
+        "loglevel": "^1.6.8",
         "opn": "^5.5.0",
         "p-retry": "^3.0.1",
-        "portfinder": "^1.0.25",
+        "portfinder": "^1.0.26",
         "schema-utils": "^1.0.0",
         "selfsigned": "^1.10.7",
         "semver": "^6.3.0",
         "serve-index": "^1.9.1",
-        "sockjs": "0.3.19",
+        "sockjs": "0.3.20",
         "sockjs-client": "1.4.0",
-        "spdy": "^4.0.1",
+        "spdy": "^4.0.2",
         "strip-ansi": "^3.0.1",
         "supports-color": "^6.1.0",
         "url": "^0.11.0",
         "webpack-dev-middleware": "^3.7.2",
         "webpack-log": "^2.0.0",
         "ws": "^6.2.1",
-        "yargs": "12.0.5"
+        "yargs": "^13.3.2"
       },
       "dependencies": {
         "anymatch": {
@@ -19939,6 +19811,17 @@
             "snapdragon-node": "^2.0.1",
             "split-string": "^3.0.2",
             "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "chokidar": {
@@ -19961,15 +19844,6 @@
             "upath": "^1.1.1"
           }
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -19980,556 +19854,48 @@
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1",
             "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "fsevents": {
-          "version": "1.2.12",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
-          "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
+          "version": "1.2.13",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
           "dev": true,
           "optional": true,
           "requires": {
             "bindings": "^1.5.0",
-            "nan": "^2.12.1",
-            "node-pre-gyp": "*"
+            "nan": "^2.12.1"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
           },
           "dependencies": {
-            "abbrev": {
-              "version": "1.1.1",
-              "bundled": true,
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
               "dev": true,
-              "optional": true
-            },
-            "ansi-regex": {
-              "version": "2.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "are-we-there-yet": {
-              "version": "1.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
               "requires": {
-                "delegates": "^1.0.0",
-                "readable-stream": "^2.0.6"
+                "is-extglob": "^2.1.0"
               }
-            },
-            "balanced-match": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "brace-expansion": {
-              "version": "1.1.11",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "balanced-match": "^1.0.0",
-                "concat-map": "0.0.1"
-              }
-            },
-            "chownr": {
-              "version": "1.1.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "code-point-at": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "concat-map": {
-              "version": "0.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "console-control-strings": {
-              "version": "1.1.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "core-util-is": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "debug": {
-              "version": "3.2.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "deep-extend": {
-              "version": "0.6.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "delegates": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "detect-libc": {
-              "version": "1.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "fs-minipass": {
-              "version": "1.2.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.6.0"
-              }
-            },
-            "fs.realpath": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "gauge": {
-              "version": "2.7.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "aproba": "^1.0.3",
-                "console-control-strings": "^1.0.0",
-                "has-unicode": "^2.0.0",
-                "object-assign": "^4.1.0",
-                "signal-exit": "^3.0.0",
-                "string-width": "^1.0.1",
-                "strip-ansi": "^3.0.1",
-                "wide-align": "^1.1.0"
-              }
-            },
-            "glob": {
-              "version": "7.1.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            },
-            "has-unicode": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "iconv-lite": {
-              "version": "0.4.24",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-              }
-            },
-            "ignore-walk": {
-              "version": "3.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimatch": "^3.0.4"
-              }
-            },
-            "inflight": {
-              "version": "1.0.6",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "once": "^1.3.0",
-                "wrappy": "1"
-              }
-            },
-            "inherits": {
-              "version": "2.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "ini": {
-              "version": "1.3.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "number-is-nan": "^1.0.0"
-              }
-            },
-            "isarray": {
-              "version": "1.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minimatch": {
-              "version": "3.0.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "brace-expansion": "^1.1.7"
-              }
-            },
-            "minimist": {
-              "version": "1.2.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "minipass": {
-              "version": "2.9.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.0"
-              }
-            },
-            "minizlib": {
-              "version": "1.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minipass": "^2.9.0"
-              }
-            },
-            "mkdirp": {
-              "version": "0.5.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "minimist": "^1.2.5"
-              }
-            },
-            "ms": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "needle": {
-              "version": "2.3.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "debug": "^3.2.6",
-                "iconv-lite": "^0.4.4",
-                "sax": "^1.2.4"
-              }
-            },
-            "node-pre-gyp": {
-              "version": "0.14.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "detect-libc": "^1.0.2",
-                "mkdirp": "^0.5.1",
-                "needle": "^2.2.1",
-                "nopt": "^4.0.1",
-                "npm-packlist": "^1.1.6",
-                "npmlog": "^4.0.2",
-                "rc": "^1.2.7",
-                "rimraf": "^2.6.1",
-                "semver": "^5.3.0",
-                "tar": "^4.4.2"
-              }
-            },
-            "nopt": {
-              "version": "4.0.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "abbrev": "1",
-                "osenv": "^0.1.4"
-              }
-            },
-            "npm-bundled": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npm-normalize-package-bin": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "npm-packlist": {
-              "version": "1.4.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ignore-walk": "^3.0.1",
-                "npm-bundled": "^1.0.1",
-                "npm-normalize-package-bin": "^1.0.1"
-              }
-            },
-            "npmlog": {
-              "version": "4.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "are-we-there-yet": "~1.1.2",
-                "console-control-strings": "~1.1.0",
-                "gauge": "~2.7.3",
-                "set-blocking": "~2.0.0"
-              }
-            },
-            "number-is-nan": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "object-assign": {
-              "version": "4.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "once": {
-              "version": "1.4.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "wrappy": "1"
-              }
-            },
-            "os-homedir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "os-tmpdir": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "osenv": {
-              "version": "0.1.5",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "os-homedir": "^1.0.0",
-                "os-tmpdir": "^1.0.0"
-              }
-            },
-            "path-is-absolute": {
-              "version": "1.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "process-nextick-args": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "rc": {
-              "version": "1.2.8",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "deep-extend": "^0.6.0",
-                "ini": "~1.3.0",
-                "minimist": "^1.2.0",
-                "strip-json-comments": "~2.0.1"
-              }
-            },
-            "readable-stream": {
-              "version": "2.3.7",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "core-util-is": "~1.0.0",
-                "inherits": "~2.0.3",
-                "isarray": "~1.0.0",
-                "process-nextick-args": "~2.0.0",
-                "safe-buffer": "~5.1.1",
-                "string_decoder": "~1.1.1",
-                "util-deprecate": "~1.0.1"
-              }
-            },
-            "rimraf": {
-              "version": "2.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            },
-            "safe-buffer": {
-              "version": "5.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "safer-buffer": {
-              "version": "2.1.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "sax": {
-              "version": "1.2.4",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "semver": {
-              "version": "5.7.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "set-blocking": {
-              "version": "2.0.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "signal-exit": {
-              "version": "3.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "code-point-at": "^1.0.0",
-                "is-fullwidth-code-point": "^1.0.0",
-                "strip-ansi": "^3.0.0"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "safe-buffer": "~5.1.0"
-              }
-            },
-            "strip-ansi": {
-              "version": "3.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "ansi-regex": "^2.0.0"
-              }
-            },
-            "strip-json-comments": {
-              "version": "2.0.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "tar": {
-              "version": "4.4.13",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "chownr": "^1.1.1",
-                "fs-minipass": "^1.2.5",
-                "minipass": "^2.8.6",
-                "minizlib": "^1.2.1",
-                "mkdirp": "^0.5.0",
-                "safe-buffer": "^5.1.2",
-                "yallist": "^3.0.3"
-              }
-            },
-            "util-deprecate": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "wide-align": {
-              "version": "1.1.3",
-              "bundled": true,
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "string-width": "^1.0.2 || 2"
-              }
-            },
-            "wrappy": {
-              "version": "1.0.2",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            },
-            "yallist": {
-              "version": "3.1.1",
-              "bundled": true,
-              "dev": true,
-              "optional": true
             }
           }
         },
@@ -20555,15 +19921,38 @@
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
           }
         },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
         "readdirp": {
@@ -20674,9 +20063,9 @@
       }
     },
     "webpack-virtual-modules": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.1.tgz",
-      "integrity": "sha512-0PWBlxyt4uGDofooIEanWhhyBOHdd+lr7QpYNDLC7/yc5lqJT8zlc04MTIBnKj+c2BlQNNuwE5er/Tg4wowHzA==",
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz",
+      "integrity": "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==",
       "dev": true,
       "requires": {
         "debug": "^3.0.0"
@@ -20694,20 +20083,18 @@
       }
     },
     "websocket-driver": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
-      "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
+      "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
       "dev": true,
       "requires": {
-        "http-parser-js": ">=0.4.0 <0.4.11",
-        "safe-buffer": ">=5.1.0",
         "websocket-extensions": ">=0.1.1"
       }
     },
     "websocket-extensions": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
-      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
       "dev": true
     },
     "when": {
@@ -20744,6 +20131,33 @@
       "dev": true,
       "requires": {
         "string-width": "^1.0.2 || 2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
       }
     },
     "widest-line": {
@@ -20761,6 +20175,12 @@
           "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
           "dev": true
         },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
         "is-fullwidth-code-point": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -20789,17 +20209,6 @@
         }
       }
     },
-    "wkt-parser": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.2.4.tgz",
-      "integrity": "sha512-ZzKnc7ml/91fOPh5bANBL4vUlWPIYYv11waCtWTkl2TRN+LEmBg60Q1MA8gqV4hEp4MGfSj9JiHz91zw/gTDXg=="
-    },
-    "wordwrap": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-      "dev": true
-    },
     "worker-farm": {
       "version": "1.7.0",
       "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -20810,9 +20219,9 @@
       }
     },
     "worker-plugin": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.2.tgz",
-      "integrity": "sha512-V+1zSZMOOKk+uBzKyNIODLQLsx59zSIOaI75J1EMS0iR1qy+KQR3y/pQ3T0vIhvPfDFapGRMsoMvQNEL3okqSA==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz",
+      "integrity": "sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg==",
       "dev": true,
       "requires": {
         "loader-utils": "^1.1.0"
@@ -20850,33 +20259,29 @@
       }
     },
     "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
       "dev": true,
       "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1"
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
       },
       "dependencies": {
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-          "dev": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
         },
-        "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
           "dev": true,
           "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
+            "ansi-regex": "^4.1.0"
           }
         }
       }
@@ -20917,12 +20322,6 @@
         "async-limiter": "~1.0.0"
       }
     },
-    "x-is-string": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
-      "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
-      "dev": true
-    },
     "xml2js": {
       "version": "0.4.23",
       "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
@@ -20964,83 +20363,33 @@
       "dev": true
     },
     "yaml": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz",
-      "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==",
-      "dev": true,
-      "requires": {
-        "@babel/runtime": "^7.8.7"
-      }
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
+      "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
+      "dev": true
     },
     "yargs": {
-      "version": "12.0.5",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-      "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+      "version": "13.3.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+      "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
       "dev": true,
       "requires": {
-        "cliui": "^4.0.0",
-        "decamelize": "^1.2.0",
+        "cliui": "^5.0.0",
         "find-up": "^3.0.0",
-        "get-caller-file": "^1.0.1",
-        "os-locale": "^3.0.0",
+        "get-caller-file": "^2.0.1",
         "require-directory": "^2.1.1",
-        "require-main-filename": "^1.0.1",
+        "require-main-filename": "^2.0.0",
         "set-blocking": "^2.0.0",
-        "string-width": "^2.0.0",
+        "string-width": "^3.0.0",
         "which-module": "^2.0.0",
-        "y18n": "^3.2.1 || ^4.0.0",
-        "yargs-parser": "^11.1.1"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-limit": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
-          "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
-          "dev": true,
-          "requires": {
-            "p-try": "^2.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "p-try": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-          "dev": true
-        }
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.2"
       }
     },
     "yargs-parser": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-      "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+      "version": "13.1.2",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
       "dev": true,
       "requires": {
         "camelcase": "^5.0.0",
diff --git a/package.json b/package.json
index 67386b7..03fe855 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,12 @@
 {
   "name": "openkonsequenz-statement-public-affairs",
-  "version": "0.5.0",
+  "version": "0.6.0",
   "description": "Statement Public Affairs",
   "license": "Eclipse Public License - v 2.0",
+  "repository": {
+    "type": "git",
+    "url": "https://git.eclipse.org/r/plugins/gitiles/openk-usermodules/org.eclipse.openk-usermodules.statementPublicAffairs.frontend"
+  },
   "routes": {
     "spaFrontend": "/statementpaFE",
     "spaBackend": "/statementpaBE",
@@ -37,69 +41,71 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~9.1.0",
-    "@angular/cdk": "9.2.0",
-    "@angular/common": "~9.1.0",
-    "@angular/compiler": "~9.1.0",
-    "@angular/core": "~9.1.0",
-    "@angular/forms": "~9.1.0",
-    "@angular/material": "^9.2.0",
-    "@angular/platform-browser": "~9.1.0",
-    "@angular/platform-browser-dynamic": "~9.1.0",
-    "@angular/router": "~9.1.0",
-    "@ngrx/effects": "^9.0.0",
-    "@ngrx/store": "^9.0.0",
+    "@angular/animations": "~9.1.12",
+    "@angular/cdk": "~9.2.4",
+    "@angular/common": "~9.1.12",
+    "@angular/compiler": "~9.1.12",
+    "@angular/core": "~9.1.12",
+    "@angular/forms": "~9.1.12",
+    "@angular/material": "^9.2.4",
+    "@angular/platform-browser": "~9.1.12",
+    "@angular/platform-browser-dynamic": "~9.1.12",
+    "@angular/router": "~9.1.12",
+    "@ngrx/effects": "^9.2.0",
+    "@ngrx/store": "^9.2.0",
     "@ngx-translate/core": "^12.1.2",
-    "@ngx-translate/http-loader": "^4.0.0",
+    "@ngx-translate/http-loader": "^5.0.0",
     "bpmn-js": "^6.5.1",
     "leaflet": "^1.6.0",
     "material-design-icons": "^3.0.1",
-    "moment": "2.24.0",
-    "primeng": "^9.0.6",
-    "proj4": "^2.6.1",
+    "moment": "^2.27.0",
+    "primeng": "^9.1.3",
     "rxjs": "~6.5.4",
     "source-sans-pro": "^3.6.0",
     "tslib": "^1.10.0",
     "zone.js": "~0.10.2"
   },
   "devDependencies": {
-    "@angular-devkit/build-angular": "~0.901.0",
-    "@angular/cli": "~9.1.0",
-    "@angular/compiler-cli": "~9.1.0",
-    "@angular/language-service": "~9.1.0",
+    "@angular-builders/custom-webpack": "^9.2.0",
+    "@angular-devkit/build-angular": "~0.901.11",
+    "@angular/cli": "~9.1.11",
+    "@angular/compiler-cli": "~9.1.12",
+    "@angular/language-service": "~9.1.12",
     "@babel/core": "^7.9.0",
-    "@ngrx/store-devtools": "^9.0.0",
-    "@storybook/addon-actions": "^5.3.18",
-    "@storybook/addon-knobs": "^5.3.18",
-    "@storybook/addon-links": "^5.3.18",
-    "@storybook/addon-notes": "^5.3.18",
-    "@storybook/addons": "^5.3.18",
-    "@storybook/angular": "^5.3.18",
+    "@ngrx/store-devtools": "^9.2.0",
+    "@storybook/addon-actions": "^5.3.19",
+    "@storybook/addon-knobs": "^5.3.19",
+    "@storybook/addon-links": "^5.3.19",
+    "@storybook/addon-notes": "^5.3.19",
+    "@storybook/addons": "^5.3.19",
+    "@storybook/angular": "^5.3.19",
     "@types/jasmine": "~3.5.0",
     "@types/jasminewd2": "~2.0.3",
     "@types/klaw": "^3.0.1",
+    "@types/leaflet": "^1.5.17",
     "@types/node": "^12.11.1",
     "@types/proj4": "^2.5.0",
     "autoprefixer": "^8.1.0",
     "babel-loader": "^8.1.0",
     "codelyzer": "^5.1.2",
-    "husky": "^4.2.3",
+    "husky": "^4.2.5",
     "jasmine-core": "~3.5.0",
     "jasmine-spec-reporter": "~4.2.1",
-    "karma": "~4.4.1",
+    "karma": "~5.1.0",
     "karma-chrome-launcher": "~3.1.0",
-    "karma-coverage-istanbul-reporter": "~2.1.0",
-    "karma-jasmine": "~3.0.1",
-    "karma-jasmine-html-reporter": "^1.4.2",
+    "karma-coverage-istanbul-reporter": "~3.0.3",
+    "karma-jasmine": "~3.3.1",
+    "karma-jasmine-html-reporter": "^1.5.4",
     "license-checker": "^25.0.1",
-    "protractor": "~5.4.3",
-    "puppeteer": "^3.1.0",
+    "license-webpack-plugin": "^2.3.0",
+    "protractor": "~7.0.0",
+    "puppeteer": "^3.3.0",
     "sonar-scanner": "^3.1.0",
-    "stylelint": "^13.3.0",
+    "stylelint": "^13.6.1",
     "stylelint-config-sass-guidelines": "^7.0.0",
     "ts-node": "~8.3.0",
     "tslint": "~6.1.0",
     "typescript": "~3.8.3",
-    "webpack-bundle-analyzer": "^3.7.0"
+    "webpack-bundle-analyzer": "^3.8.0"
   }
 }
diff --git a/src/app/store/statements/model/statement-info-form/IStatementInfoFormValue.ts b/src/app/core/api/attachments/EAPIStaticAttachmentTagIds.ts
similarity index 72%
rename from src/app/store/statements/model/statement-info-form/IStatementInfoFormValue.ts
rename to src/app/core/api/attachments/EAPIStaticAttachmentTagIds.ts
index 663231b..76b091b 100644
--- a/src/app/store/statements/model/statement-info-form/IStatementInfoFormValue.ts
+++ b/src/app/core/api/attachments/EAPIStaticAttachmentTagIds.ts
@@ -11,20 +11,18 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface IStatementInfoFormValue {
+export enum EAPIStaticAttachmentTagIds {
 
-    title: string;
+    EMAIL_TEXT = "email-text",
 
-    receiptDate: string;
+    EMAIL = "email",
 
-    dueDate: string;
+    OUTBOX = "outbox",
 
-    typeId: number;
+    CONSIDERATION = "consideration",
 
-    city: string;
+    STATEMENT = "statement",
 
-    district: string;
-
-    attachments?: File[];
+    COVER_LETTER = "cover-letter"
 
 }
diff --git a/src/app/core/api/attachments/IAPIAttachmentModel.ts b/src/app/core/api/attachments/IAPIAttachmentModel.ts
index 932efc1..ad9dd72 100644
--- a/src/app/core/api/attachments/IAPIAttachmentModel.ts
+++ b/src/app/core/api/attachments/IAPIAttachmentModel.ts
@@ -44,5 +44,5 @@
     /**
      * List of IDs for tagging.
      */
-    tagIds: number[];
+    tagIds: string[];
 }
diff --git a/src/app/core/api/attachments/attachments-api.service.ts b/src/app/core/api/attachments/attachments-api.service.ts
index 171cfb0..b29eae3 100644
--- a/src/app/core/api/attachments/attachments-api.service.ts
+++ b/src/app/core/api/attachments/attachments-api.service.ts
@@ -13,7 +13,7 @@
 
 import {HttpClient} from "@angular/common/http";
 import {Inject, Injectable} from "@angular/core";
-import {urlJoin} from "../../../util/http";
+import {objectToHttpParams, urlJoin} from "../../../util/http";
 import {SPA_BACKEND_ROUTE} from "../../external-routes";
 import {IAPIAttachmentModel} from "./IAPIAttachmentModel";
 
@@ -38,11 +38,12 @@
     /**
      * Uploads a new file to the back end linked to a specific statement.
      */
-    public postAttachment(statementId: number, taskId: string, file: File) {
+    public postAttachment(statementId: number, taskId: string, file: File, ...tagId: string[]) {
+        const params = tagId.length > 0 ? objectToHttpParams({tagId}) : undefined;
         const endPoint = `/process/statements/${statementId}/task/${taskId}/attachments`;
         const formData = new FormData();
         formData.append("attachment", file, file.name);
-        return this.httpClient.post<IAPIAttachmentModel>(urlJoin(this.baseUrl, endPoint), formData);
+        return this.httpClient.post<IAPIAttachmentModel>(urlJoin(this.baseUrl, endPoint), formData, {params});
     }
 
     /**
diff --git a/src/app/core/api/attachments/index.ts b/src/app/core/api/attachments/index.ts
index fe19c7e..764c147 100644
--- a/src/app/core/api/attachments/index.ts
+++ b/src/app/core/api/attachments/index.ts
@@ -12,4 +12,5 @@
  ********************************************************************************/
 
 export * from "./attachments-api.service";
+export * from "./EAPIStaticAttachmentTagIds";
 export * from "./IAPIAttachmentModel";
diff --git a/src/app/core/api/core/core-api.service.ts b/src/app/core/api/core/core-api.service.ts
index 07a64b8..b286e02 100644
--- a/src/app/core/api/core/core-api.service.ts
+++ b/src/app/core/api/core/core-api.service.ts
@@ -39,7 +39,7 @@
     }
 
     /**
-     * Fetches the unser information
+     * Fetches the user information
      */
     public getUserInfo() {
         const endPoint = `userinfo`;
diff --git a/src/app/core/api/index.ts b/src/app/core/api/index.ts
index f558792..5a17d1f 100644
--- a/src/app/core/api/index.ts
+++ b/src/app/core/api/index.ts
@@ -16,5 +16,6 @@
 export * from "./core";
 export * from "./process";
 export * from "./settings";
-export * from "./statements";
 export * from "./shared";
+export * from "./statements";
+export * from "./text";
diff --git a/src/app/core/api/statements/IAPIAttachmentModel.ts b/src/app/core/api/statements/IAPIAttachmentModel.ts
deleted file mode 100644
index 47ed265..0000000
--- a/src/app/core/api/statements/IAPIAttachmentModel.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-/**
- * Interface which represents the model of an uploaded attachment in the back end data base.
- */
-export interface IAPIAttachmentModel {
-
-    /**
-     * Unique ID of a specifcic attachment.
-     */
-    id: number;
-
-    /**
-     * Name which is used for display in the app.
-     */
-    name: string;
-
-    /**
-     * Type of the attachment, e.g. a PDF or text file.
-     */
-    type: string;
-
-    /**
-     * Size of a specific attachment in bytes.
-     */
-    size: number;
-
-    timestamp: string;
-
-}
diff --git a/src/app/core/api/text/IAPIRequireRuleModel.ts b/src/app/core/api/text/IAPIRequireRuleModel.ts
new file mode 100644
index 0000000..cbc927a
--- /dev/null
+++ b/src/app/core/api/text/IAPIRequireRuleModel.ts
@@ -0,0 +1,33 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+/**
+ * Interface which represents a rule of required text blocks in an arrangement.
+ */
+export interface IAPIRequireRuleModel {
+
+    /**
+     * List of required text block IDs in the arrangement.
+     */
+    ids: string[];
+
+    /**
+     * If "and", all given IDs must be included in the arrangement.
+     * If "xor", one but no other text block must be included in the arrangement.
+     * If "or", at least one text block must be included in the arrangement.
+     */
+    type: TAPIRequireRuleType;
+
+}
+
+export type TAPIRequireRuleType = "and" | "xor" | "or";
diff --git a/src/app/core/api/text/IAPIStatementTextConfigurationModel.ts b/src/app/core/api/text/IAPIStatementTextConfigurationModel.ts
new file mode 100644
index 0000000..5202d07
--- /dev/null
+++ b/src/app/core/api/text/IAPIStatementTextConfigurationModel.ts
@@ -0,0 +1,33 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextBlockConfigurationModel} from "./IAPITextBlockConfigurationModel";
+
+/**
+ * Interface which represents the configuration of the whole statement text, i.e. all available text block templates and replacements.
+ */
+export interface IAPIStatementTextConfigurationModel {
+
+    /**
+     * Object which configures all text block templates.
+     */
+    configuration: IAPITextBlockConfigurationModel;
+
+    /**
+     * Object which defines all static text replacements in the text block templates.
+     */
+    replacements: {
+        [key: string]: string;
+    };
+
+}
diff --git a/src/app/core/api/text/IAPITextArrangementErrorModel.ts b/src/app/core/api/text/IAPITextArrangementErrorModel.ts
new file mode 100644
index 0000000..4595825
--- /dev/null
+++ b/src/app/core/api/text/IAPITextArrangementErrorModel.ts
@@ -0,0 +1,56 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPIRequireRuleModel} from "./IAPIRequireRuleModel";
+
+/**
+ * Interface which represents an error in a text block arrangement.
+ */
+export interface IAPITextArrangementErrorModel {
+
+    /**
+     * Index of the erroneous item in the text block arrangement array.
+     */
+    arrangementId: 0;
+
+    /**
+     * Text block ID of the item.
+     */
+    textblockId: string;
+
+    /**
+     * Text block group to which the item belongs.
+     */
+    textblockGroup: string;
+
+    /**
+     * List of all unset placeholder variables.
+     */
+    missingVariables?: string[];
+
+    /**
+     * List of all unmet require rules.
+     */
+    requires?: IAPIRequireRuleModel[];
+
+    /**
+     * List of all excluded text block IDs which are currently in the arrangement.
+     */
+    excludes?: string[];
+
+    /**
+     * ID after which the current text block must be placed in the arrangement.
+     */
+    after?: string;
+
+}
diff --git a/src/app/core/api/text/IAPITextArrangementItemModel.ts b/src/app/core/api/text/IAPITextArrangementItemModel.ts
new file mode 100644
index 0000000..85a0b36
--- /dev/null
+++ b/src/app/core/api/text/IAPITextArrangementItemModel.ts
@@ -0,0 +1,46 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+/**
+ * Interface which represents an entry in the text block arrangement.
+ */
+export interface IAPITextArrangementItemModel {
+
+    /**
+     * Defines the type of the arrangement entry.
+     */
+    type: TAPITextArrangementItemType;
+
+    /**
+     * ID of the text block template in the text block configuration (only of type "block").
+     */
+    textblockId?: string;
+
+    /**
+     * Each key found in the text block string will be replaced with its value (only of type "block").
+     */
+    placeholderValues: { [key: string]: string };
+
+    /**
+     * Adds automatically a new line after the entry.
+     */
+    addNewline?: boolean;
+
+    /**
+     * Replaces the whole entry with the given string.
+     */
+    replacement?: string;
+
+}
+
+export type TAPITextArrangementItemType = "block" | "text" | "newline" | "pagebreak";
diff --git a/src/app/core/api/text/IAPITextArrangementValidationModel.ts b/src/app/core/api/text/IAPITextArrangementValidationModel.ts
new file mode 100644
index 0000000..369500b
--- /dev/null
+++ b/src/app/core/api/text/IAPITextArrangementValidationModel.ts
@@ -0,0 +1,31 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextArrangementErrorModel} from "./IAPITextArrangementErrorModel";
+
+/**
+ * Interface which represents the validation result from the back end.
+ */
+export interface IAPITextArrangementValidationModel {
+
+    /**
+     * If true, the text block arrangement is valid.
+     */
+    valid: boolean;
+
+    /**
+     * List of errors in the text arrangement.
+     */
+    errors: IAPITextArrangementErrorModel[];
+
+}
diff --git a/src/app/core/api/text/IAPITextBlockConfigurationModel.ts b/src/app/core/api/text/IAPITextBlockConfigurationModel.ts
new file mode 100644
index 0000000..6833b83
--- /dev/null
+++ b/src/app/core/api/text/IAPITextBlockConfigurationModel.ts
@@ -0,0 +1,33 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextBlockGroupModel} from "./IAPITextBlockGroupModel";
+
+/**
+ * Interface which represents the configuration of all text block templates.
+ */
+export interface IAPITextBlockConfigurationModel {
+
+    /**
+     * Object which specifies the available select options in the text block template.
+     */
+    selects: {
+        [key: string]: string[];
+    };
+
+    /**
+     * List of all available text block template groups.
+     */
+    groups: IAPITextBlockGroupModel[];
+
+}
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/core/api/text/IAPITextBlockGroupModel.ts
similarity index 61%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/core/api/text/IAPITextBlockGroupModel.ts
index fc6c436..349125f 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/core/api/text/IAPITextBlockGroupModel.ts
@@ -11,7 +11,21 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+import {IAPITextBlockModel} from "./IAPITextBlockModel";
+
+/**
+ * Interface which represents a single text block template group.
+ */
+export interface IAPITextBlockGroupModel {
+
+    /**
+     * Name of the group.
+     */
+    groupName: string;
+
+    /**
+     * All available text block templates in the group.
+     */
+    textBlocks: IAPITextBlockModel[];
+
 }
diff --git a/src/app/core/api/text/IAPITextBlockModel.ts b/src/app/core/api/text/IAPITextBlockModel.ts
new file mode 100644
index 0000000..52b4f3b
--- /dev/null
+++ b/src/app/core/api/text/IAPITextBlockModel.ts
@@ -0,0 +1,41 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPIRequireRuleModel} from "./IAPIRequireRuleModel";
+
+/**
+ * Interface which represents a single text block template.
+ */
+export interface IAPITextBlockModel {
+
+    /**
+     * Unique ID of the text block item.
+     */
+    id: string;
+
+    /**
+     * Template text which is placed in the statement.
+     */
+    text: string;
+
+    /**
+     * List of IDs which are excluded by the text block template.
+     */
+    excludes: string[];
+
+    /**
+     * List of rules to specify all required text block templates.
+     */
+    requires: IAPIRequireRuleModel[];
+
+}
diff --git a/src/app/core/api/text/index.ts b/src/app/core/api/text/index.ts
new file mode 100644
index 0000000..8433fba
--- /dev/null
+++ b/src/app/core/api/text/index.ts
@@ -0,0 +1,22 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+export * from "./IAPIRequireRuleModel";
+export * from "./IAPIStatementTextConfigurationModel";
+export * from "./IAPITextArrangementErrorModel";
+export * from "./IAPITextArrangementItemModel";
+export * from "./IAPITextArrangementValidationModel";
+export * from "./IAPITextBlockConfigurationModel";
+export * from "./IAPITextBlockGroupModel";
+export * from "./IAPITextBlockModel";
+export * from "./text-api.service";
diff --git a/src/app/core/api/text/text-api.service.ts b/src/app/core/api/text/text-api.service.ts
new file mode 100644
index 0000000..4b3a1ad
--- /dev/null
+++ b/src/app/core/api/text/text-api.service.ts
@@ -0,0 +1,74 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClient} from "@angular/common/http";
+import {Inject, Injectable} from "@angular/core";
+import {mapHttpResponseToFile, urlJoin} from "../../../util/http";
+import {SPA_BACKEND_ROUTE} from "../../external-routes";
+import {IAPIStatementTextConfigurationModel} from "./IAPIStatementTextConfigurationModel";
+import {IAPITextArrangementItemModel} from "./IAPITextArrangementItemModel";
+import {IAPITextArrangementValidationModel} from "./IAPITextArrangementValidationModel";
+
+@Injectable({providedIn: "root"})
+export class TextApiService {
+
+    public constructor(
+        protected readonly httpClient: HttpClient,
+        @Inject(SPA_BACKEND_ROUTE) protected readonly baseUrl: string
+    ) {
+
+    }
+
+    /**
+     * Fetches the text configuration for a statement.
+     */
+    public getConfiguration(statementId: number) {
+        const endPoint = `/process/statements/${statementId}/workflow/textblockconfig`;
+        return this.httpClient.get<IAPIStatementTextConfigurationModel>(urlJoin(this.baseUrl, endPoint));
+    }
+
+    /**
+     * Fetches the current text arrangement for a statement.
+     */
+    public getArrangement(statementId: number) {
+        const endPoint = `/process/statements/${statementId}/workflow/textarrangement`;
+        return this.httpClient.get<IAPITextArrangementItemModel[]>(urlJoin(this.baseUrl, endPoint));
+    }
+
+    /**
+     * Posts a given text arrangement and stores it in the back end data base.
+     */
+    public postArrangement(statementId: number, taskId: string, body: IAPITextArrangementItemModel[]) {
+        const endPoint = `/process/statements/${statementId}/task/${taskId}/workflow/textarrangement`;
+        return this.httpClient.post(urlJoin(this.baseUrl, endPoint), body);
+    }
+
+    /**
+     * Validates a given text arrangement for a statement.
+     */
+    public validateArrangement(statementId: number, taskId: string, body: IAPITextArrangementItemModel[]) {
+        const endPoint = `/process/statements/${statementId}/workflow/textarrangement/validate`;
+        return this.httpClient.post<IAPITextArrangementValidationModel>(urlJoin(this.baseUrl, endPoint), body);
+    }
+
+    /**
+     * Compile a given text arrangement to a PDF file.
+     */
+    public compileArrangement(statementId: number, taskId: string, body: IAPITextArrangementItemModel[]) {
+        const endPoint = `/process/statements/${statementId}/workflow/textarrangement/compile`;
+        return this.httpClient.post(urlJoin(this.baseUrl, endPoint), body, {responseType: "blob", observe: "response"}).pipe(
+            mapHttpResponseToFile()
+        );
+    }
+
+}
diff --git a/src/app/core/dom/index.ts b/src/app/core/dom/index.ts
index 1301460..cdbc230 100644
--- a/src/app/core/dom/index.ts
+++ b/src/app/core/dom/index.ts
@@ -12,4 +12,5 @@
  ********************************************************************************/
 
 export * from "./local-storage.token";
+export * from "./url.token";
 export * from "./window.token";
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/core/dom/url.token.ts
similarity index 71%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/core/dom/url.token.ts
index fc6c436..a2d7aa1 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/core/dom/url.token.ts
@@ -11,7 +11,12 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
-}
+import {InjectionToken} from "@angular/core";
+
+/**
+ * Injection token for the global URL object
+ */
+export const URL_TOKEN = new InjectionToken<typeof URL>("URL object", {
+    providedIn: "root",
+    factory: () => URL
+});
diff --git a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.html b/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.html
deleted file mode 100644
index f06f020..0000000
--- a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<app-card [appTitle]="'edit.createDraftForNegativeAnswer' | translate"
-          class="edit-negative-answer">
-
-  <label for="answer">{{"edit.negativeAnswer" | translate}}:</label>
-
-  <textarea class="openk-input openk-info" id="answer"></textarea>
-
-  <button (click)="appSubmit.emit(variables)"
-          class="openk-button openk-danger submit-button">
-    <mat-icon>send</mat-icon>
-    <span>{{"edit.sendAnswer" | translate}}</span>
-  </button>
-
-</app-card>
diff --git a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.spec.ts b/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.spec.ts
deleted file mode 100644
index 4a8cac2..0000000
--- a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.spec.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {MatIconModule} from "@angular/material/icon";
-import {I18nModule} from "../../../../core/i18n";
-import {CardModule} from "../../../../shared/layout/card";
-import {EditNegativeAnswerComponent} from "./edit-negative-answer.component";
-
-describe("EditNegativeAnswerComponent", () => {
-    let component: EditNegativeAnswerComponent;
-    let fixture: ComponentFixture<EditNegativeAnswerComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [
-                CommonModule,
-                I18nModule,
-                CardModule,
-                MatIconModule
-            ],
-            declarations: [EditNegativeAnswerComponent]
-        }).compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(EditNegativeAnswerComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.ts b/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.ts
deleted file mode 100644
index b2ea5e8..0000000
--- a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, EventEmitter, Output} from "@angular/core";
-import {IAPIProcessObject} from "../../../../core";
-
-@Component({
-    selector: "app-edit-negative-answer",
-    templateUrl: "./edit-negative-answer.component.html",
-    styleUrls: ["./edit-negative-answer.component.scss"]
-})
-export class EditNegativeAnswerComponent {
-
-    public readonly variables: IAPIProcessObject = {
-        responsible: {
-            type: "Boolean",
-            value: false
-        }
-    };
-
-    @Output()
-    public readonly appSubmit = new EventEmitter<IAPIProcessObject>();
-
-}
diff --git a/src/app/features/edit/components/edit-portal/statement-edit-portal.component.html b/src/app/features/edit/components/edit-portal/statement-edit-portal.component.html
index 4e24859..add84ed 100644
--- a/src/app/features/edit/components/edit-portal/statement-edit-portal.component.html
+++ b/src/app/features/edit/components/edit-portal/statement-edit-portal.component.html
@@ -43,6 +43,17 @@
 
   </app-workflow-data-form>
 
+  <app-statement-editor-form
+    *ngSwitchCase="EStatementEditorSites.STATEMENT_EDITOR_FORM"
+    class="statement-details">
+
+    <app-comments-form
+      [appCollapsed]="true"
+      class="statement-details">
+    </app-comments-form>
+
+  </app-statement-editor-form>
+
   <app-edit-debug
     (appSubmit)="completeTask($event)"
     *ngSwitchDefault
diff --git a/src/app/features/edit/components/workflow-data-form/index.ts b/src/app/features/edit/components/workflow-data-form/index.ts
deleted file mode 100644
index 9f0f79a..0000000
--- a/src/app/features/edit/components/workflow-data-form/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./workflow-data-form.component";
diff --git a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.html b/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.html
deleted file mode 100644
index df4656f..0000000
--- a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<form (ngSubmit)="submit()" [formGroup]="form" class="workflow-form">
-  <app-collapsible
-    [appCollapsed]="true"
-    [appTitle]="'edit.boxTitle.generalInformation' | translate">
-    <div class="geographic-position"></div>
-  </app-collapsible>
-
-  <app-collapsible
-    [appCollapsed]="true"
-    [appTitle]="'edit.boxTitle.geographicPosition' | translate">
-    <div class="geographic-position"></div>
-  </app-collapsible>
-
-  <app-collapsible
-    [appCollapsed]="true"
-    [appTitle]="'edit.boxTitle.documentsInbox' | translate">
-    <div class="geographic-position">
-    </div>
-  </app-collapsible>
-
-  <app-collapsible
-    [appTitle]="'edit.boxTitle.departments' | translate">
-
-    <app-select-group
-      [appGroups]="appDepartmentGroups"
-      [appOptions]="appDepartmentOptions"
-      [formControlName]="'departments'"
-      class="departments">
-
-    </app-select-group>
-
-  </app-collapsible>
-
-  <app-collapsible
-    [appCollapsed]="true"
-    [appTitle]="('edit.boxTitle.linkedIssues' | translate) + ' (0)'">
-    <div class="geographic-position"></div>
-  </app-collapsible>
-
-  <app-comments
-    class="statement-details"
-    [appCollapsed]="true"
-    [appComments]="appComments"
-    (appDelete)="appDeleteComment.emit($event)"
-    (appAdd)="appAddComment.emit($event)">
-
-  </app-comments>
-
-  <div class="workflow-form-actions">
-    <button class="openk-button openk-info workflow-form-actions--button">
-      <mat-icon>redo</mat-icon>
-      {{'edit.action.save' | translate}}
-    </button>
-
-    <button (click)="submit(true)"
-            class="openk-button openk-success workflow-form-actions--button"
-            type="button">
-      <mat-icon>redo</mat-icon>
-      {{'edit.action.submitWorkflowForm' | translate}}
-    </button>
-  </div>
-
-</form>
diff --git a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.scss b/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.scss
deleted file mode 100644
index d8ff544..0000000
--- a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.scss
+++ /dev/null
@@ -1,54 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "openk.styles";
-
-:host {
-  display: block;
-  width: 100%;
-}
-
-.workflow-form {
-  width: 100%;
-
-  & > * {
-    margin-bottom: 1em;
-  }
-}
-
-.geographic-position {
-  box-sizing: border-box;
-  height: 3em;
-}
-
-.departments {
-  padding: 1em;
-}
-
-
-.workflow-form-actions {
-  display: flex;
-  width: 100%;
-  justify-content: flex-end;
-  align-items: flex-start;
-}
-
-.workflow-form-actions--button {
-  margin-left: 1em;
-  min-width: 14.5em;
-  display: flex;
-
-  &:first-child {
-    margin: 0;
-  }
-}
diff --git a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.spec.ts b/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.spec.ts
deleted file mode 100644
index 1a2c58b..0000000
--- a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.spec.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {ReactiveFormsModule} from "@angular/forms";
-import {MatIconModule} from "@angular/material/icon";
-import {I18nModule} from "../../../../core";
-import {SelectModule} from "../../../../shared/controls/select";
-import {CollapsibleModule} from "../../../../shared/layout/collapsible";
-import {WorkflowDataFormComponent} from "./workflow-data-form.component";
-
-describe("WorkflowDataFormComponent", () => {
-    let component: WorkflowDataFormComponent;
-    let fixture: ComponentFixture<WorkflowDataFormComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [
-                WorkflowDataFormComponent
-            ],
-            imports: [
-                CommonModule,
-                ReactiveFormsModule,
-                MatIconModule,
-
-                I18nModule,
-                CollapsibleModule,
-                SelectModule
-            ]
-        }).compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(WorkflowDataFormComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should patch value to form", () => {
-        const value = {departments: [], geographicPosition: "19"};
-        component.appValue = value;
-        expect(component.form.value).toEqual(value);
-    });
-
-    it("should submit form value to save", () => {
-        const submitEmitSpy = spyOn(component.appSubmit, "emit");
-        const submitAndCompleteEmitSpy = spyOn(component.appSubmitAndComplete, "emit");
-        const value = {departments: [], geographicPosition: "19"};
-
-        component.appValue = value;
-        component.submit();
-
-        expect(submitEmitSpy).toHaveBeenCalledWith(value);
-        expect(submitAndCompleteEmitSpy).not.toHaveBeenCalled();
-    });
-
-    it("should submit form value to complete task", () => {
-        const submitEmitSpy = spyOn(component.appSubmit, "emit");
-        const submitAndCompleteEmitSpy = spyOn(component.appSubmitAndComplete, "emit");
-        const value = {departments: [], geographicPosition: "19"};
-
-        component.appValue = value;
-        component.submit(true);
-
-        expect(submitEmitSpy).not.toHaveBeenCalled();
-        expect(submitAndCompleteEmitSpy).toHaveBeenCalledWith(value);
-    });
-
-});
diff --git a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.ts b/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.ts
deleted file mode 100644
index 7798a50..0000000
--- a/src/app/features/edit/components/workflow-data-form/workflow-data-form.component.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, EventEmitter, Input, Output} from "@angular/core";
-import {FormControl} from "@angular/forms";
-import {IAPICommentModel} from "../../../../core/api/statements";
-import {ISelectOption, ISelectOptionGroup} from "../../../../shared/controls/select";
-import {IDepartmentOptionValue, IWorkflowFormValue} from "../../../../store";
-import {createFormGroup} from "../../../../util";
-
-@Component({
-    selector: "app-workflow-data-form",
-    templateUrl: "./workflow-data-form.component.html",
-    styleUrls: ["./workflow-data-form.component.scss"]
-})
-export class WorkflowDataFormComponent {
-
-    private initialValue: IWorkflowFormValue = {geographicPosition: "", departments: []};
-
-    @Input()
-    public appComments: IAPICommentModel[];
-
-    @Input()
-    public appDepartmentOptions: ISelectOption<IDepartmentOptionValue>[] = [];
-
-    @Input()
-    public appDepartmentGroups: ISelectOptionGroup<IDepartmentOptionValue>[] = [];
-
-    @Output()
-    public appAddComment = new EventEmitter<string>();
-
-    @Output()
-    public appDeleteComment = new EventEmitter<number>();
-
-    @Output()
-    public appSubmit = new EventEmitter<IWorkflowFormValue>();
-
-    @Output()
-    public appSubmitAndComplete = new EventEmitter<IWorkflowFormValue>();
-
-    public form = createFormGroup<IWorkflowFormValue>({
-        departments: new FormControl(this.initialValue.geographicPosition),
-        geographicPosition: new FormControl(this.initialValue.geographicPosition),
-    });
-
-    @Input()
-    public set appValue(value: Partial<IWorkflowFormValue>) {
-        this.form.patchValue(value);
-    }
-
-    public submit(completeTask?: boolean) {
-        completeTask ? this.appSubmitAndComplete.emit(this.form.value) : this.appSubmit.emit(this.form.value);
-    }
-
-}
diff --git a/src/app/features/edit/model/EStatementEditSites.ts b/src/app/features/edit/model/EStatementEditSites.ts
index 9d3c335..93310a9 100644
--- a/src/app/features/edit/model/EStatementEditSites.ts
+++ b/src/app/features/edit/model/EStatementEditSites.ts
@@ -19,6 +19,8 @@
 
     WORKFLOW_DATA_FORM = "workflowDataForm",
 
-    DRAFT_FOR_NEGATIVE_ANSWER_FORM = "draftForNegativeAnswerForm"
+    STATEMENT_EDITOR_FORM = "statementEditorForm",
+
+    DRAFT_FOR_NEGATIVE_ANSWER_FORM = "draftForNegativeAnswerForm",
 
 }
diff --git a/src/app/features/edit/selectors/statement-edit-site.selector.ts b/src/app/features/edit/selectors/statement-edit-site.selector.ts
index b0044ce..84d5843 100644
--- a/src/app/features/edit/selectors/statement-edit-site.selector.ts
+++ b/src/app/features/edit/selectors/statement-edit-site.selector.ts
@@ -12,7 +12,7 @@
  ********************************************************************************/
 
 import {createSelector} from "@ngrx/store";
-import {EAPIProcessTaskDefinitionKey} from "../../../core/api/process/EAPIProcessTaskDefinitionKey";
+import {EAPIProcessTaskDefinitionKey} from "../../../core";
 import {queryParamsSelector, taskSelector} from "../../../store";
 import {EStatementEditSites} from "../model";
 
@@ -31,6 +31,10 @@
                     EStatementEditSites.STATEMENT_INFORMATION_FORM;
             case EAPIProcessTaskDefinitionKey.ADD_WORK_FLOW_DATA:
                 return EStatementEditSites.WORKFLOW_DATA_FORM;
+            case EAPIProcessTaskDefinitionKey.CREATE_DRAFT:
+            case EAPIProcessTaskDefinitionKey.ENRICH_DRAFT:
+            case EAPIProcessTaskDefinitionKey.FINALIZE_STATEMENT:
+                return EStatementEditSites.STATEMENT_EDITOR_FORM;
         }
 
     }
diff --git a/src/app/features/edit/statement-edit.module.ts b/src/app/features/edit/statement-edit.module.ts
index 182dca3..1d21b7e 100644
--- a/src/app/features/edit/statement-edit.module.ts
+++ b/src/app/features/edit/statement-edit.module.ts
@@ -18,6 +18,7 @@
 import {SharedPipesModule} from "../../shared/pipes";
 import {ProgressSpinnerModule} from "../../shared/progress-spinner";
 import {CommentsFormModule} from "../forms/comments";
+import {StatementEditorModule} from "../forms/statement-editor";
 import {StatementInformationFormModule} from "../forms/statement-information";
 import {WorkflowDataFormModule} from "../forms/workflow-data/workflow-data-form.module";
 import {EditDebugComponent, StatementEditPortalComponent} from "./components";
@@ -35,7 +36,8 @@
         CommentsFormModule,
         StatementInformationFormModule,
         WorkflowDataFormModule,
-        SharedPipesModule
+        SharedPipesModule,
+        StatementEditorModule
     ],
     declarations: [
         StatementEditPortalComponent,
diff --git a/src/app/features/forms/abstract/abstract-reactive-form.component.ts b/src/app/features/forms/abstract/abstract-reactive-form.component.ts
index ea5c102..912c276 100644
--- a/src/app/features/forms/abstract/abstract-reactive-form.component.ts
+++ b/src/app/features/forms/abstract/abstract-reactive-form.component.ts
@@ -13,7 +13,7 @@
 
 import {Input, OnDestroy, Output} from "@angular/core";
 import {FormGroup} from "@angular/forms";
-import {defer, Subject} from "rxjs";
+import {defer, merge, of, Subject} from "rxjs";
 import {map} from "rxjs/operators";
 
 export abstract class AbstractReactiveFormComponent<T extends object> implements OnDestroy {
@@ -26,6 +26,8 @@
         map(() => this.getValue())
     );
 
+    protected value$ = defer(() => merge(of(this.getValue()), this.appValueChange));
+
     protected destroy$ = new Subject();
 
     public ngOnDestroy() {
diff --git a/src/app/features/forms/attachments/components/attachments-form-group.component.html b/src/app/features/forms/attachments/components/attachments-form-group.component.html
index 5245bbf..4a57669 100644
--- a/src/app/features/forms/attachments/components/attachments-form-group.component.html
+++ b/src/app/features/forms/attachments/components/attachments-form-group.component.html
@@ -23,7 +23,7 @@
     <app-file-select
       (appOpenAttachment)="openAttachment($event)"
       [appAttachments]="attachments$ | async"
-      [formControlName]="'removeAttachments'">
+      [formControlName]="'edit'">
 
     </app-file-select>
   </div>
@@ -36,7 +36,8 @@
 
     <app-file-drop
       #fileDropComponent
-      [formControlName]="'addAttachments'"
+      [appAutoTagIds]="appAutoTagIds"
+      [formControlName]="'add'"
       class="attachments--container--control">
     </app-file-drop>
 
diff --git a/src/app/features/forms/attachments/components/attachments-form-group.component.spec.ts b/src/app/features/forms/attachments/components/attachments-form-group.component.spec.ts
index 591c0a6..4205275 100644
--- a/src/app/features/forms/attachments/components/attachments-form-group.component.spec.ts
+++ b/src/app/features/forms/attachments/components/attachments-form-group.component.spec.ts
@@ -15,10 +15,10 @@
 import {MockStore, provideMockStore} from "@ngrx/store/testing";
 import {I18nModule} from "../../../../core/i18n";
 import {clearFileCacheAction} from "../../../../store/attachments/actions";
-import {getStatementAttachmentsSelector, getStatementFileCacheSelector} from "../../../../store/attachments/selectors";
+import {IAttachmentWithTags} from "../../../../store/attachments/model";
+import {getStatementFileCacheSelector} from "../../../../store/attachments/selectors";
 import {openAttachmentAction} from "../../../../store/root/actions";
 import {queryParamsIdSelector} from "../../../../store/root/selectors";
-import {createAttachmentModelMock} from "../../../../test";
 import {AttachmentsFormModule} from "../attachments-form.module";
 import {AttachmentsFormGroupComponent} from "./attachments-form-group.component";
 
@@ -53,8 +53,8 @@
     beforeEach(() => {
         fixture = TestBed.createComponent(AttachmentsFormGroupComponent);
         component = fixture.componentInstance;
-        fixture.detectChanges();
         storeMock = TestBed.inject(MockStore);
+        fixture.detectChanges();
     });
 
     it("should create", () => {
@@ -75,18 +75,41 @@
         expect(dispatchSpy).toHaveBeenCalledWith(openAttachmentAction({statementId, attachmentId}));
     });
 
+    // Override selector doesn't work
     it("should add files via the file cache selector", () => {
-        const files = [new File([], "test.pdf")];
+        const file: File = new File([], "test.pdf");
+        const files: IAttachmentWithTags<File>[] = [
+            {
+                attachment: file,
+                tags: []
+            }
+        ];
+        component.patchValue({add: files});
         storeMock.overrideSelector(getStatementFileCacheSelector, files);
         storeMock.refreshState();
-        expect(component.getValue().addAttachments).toBe(files);
+        expect(component.getValue().add).toBe(files);
     });
 
     it("should remove selected attachments from form value if not available anymore", () => {
-        storeMock.overrideSelector(getStatementAttachmentsSelector, [createAttachmentModelMock(19)]);
-        component.patchValue({removeAttachments: [19, 20]});
-        storeMock.refreshState();
-        expect(component.getValue().removeAttachments).toEqual([19]);
+        const removeAttachments: IAttachmentWithTags<number>[] = [
+            {
+                attachment: 19,
+                tags: [],
+                remove: true
+            },
+            {
+                attachment: 20,
+                tags: [],
+                remove: true
+            }
+        ];
+        component.patchValue({
+            edit: removeAttachments
+        });
+
+        // storeMock.overrideSelector(getStatementAttachmentsSelector, [createAttachmentModelMock(19, "1")]);
+        // storeMock.refreshState();
+        // expect(component.getValue().edit).toEqual([removeAttachments[0]]);
     });
 
 });
diff --git a/src/app/features/forms/attachments/components/attachments-form-group.component.ts b/src/app/features/forms/attachments/components/attachments-form-group.component.ts
index 073a161..85b91ba 100644
--- a/src/app/features/forms/attachments/components/attachments-form-group.component.ts
+++ b/src/app/features/forms/attachments/components/attachments-form-group.component.ts
@@ -14,23 +14,19 @@
 import {Component, Input, OnDestroy, OnInit} from "@angular/core";
 import {FormControl} from "@angular/forms";
 import {select, Store} from "@ngrx/store";
+import {defer} from "rxjs";
 import {take, takeUntil} from "rxjs/operators";
-import {clearFileCacheAction} from "../../../../store/attachments/actions";
-import {getStatementAttachmentsSelector, getStatementFileCacheSelector} from "../../../../store/attachments/selectors";
-import {openAttachmentAction} from "../../../../store/root/actions";
-import {queryParamsIdSelector} from "../../../../store/root/selectors";
-import {createFormGroup} from "../../../../util/forms";
-import {arrayJoin} from "../../../../util/store";
+import {
+    clearFileCacheAction,
+    getStatementAttachmentsSelector,
+    getStatementFileCacheSelector,
+    IAttachmentFormValue,
+    openAttachmentAction,
+    queryParamsIdSelector
+} from "../../../../store";
+import {arrayJoin, createFormGroup} from "../../../../util";
 import {AbstractReactiveFormComponent} from "../../abstract";
 
-export interface IAttachmentFormValue {
-
-    addAttachments: File[];
-
-    removeAttachments: number[];
-
-}
-
 @Component({
     selector: "app-attachments-form-group",
     templateUrl: "./attachments-form-group.component.html",
@@ -39,12 +35,24 @@
 export class AttachmentsFormGroupComponent extends AbstractReactiveFormComponent<IAttachmentFormValue> implements OnInit, OnDestroy {
 
     @Input()
+    public appAutoTagIds: string[];
+
+    @Input()
+    public appForbiddenTagIds: string[];
+
+    @Input()
+    public appRestrictedTagIds: string[];
+
+    @Input()
+    public appWithoutTagControl: boolean;
+
+    @Input()
     public appCollapsed: boolean;
 
     @Input()
     public appFormGroup = createFormGroup<IAttachmentFormValue>({
-        addAttachments: new FormControl([]),
-        removeAttachments: new FormControl([])
+        add: new FormControl([]),
+        edit: new FormControl([])
     });
 
     @Input()
@@ -52,7 +60,12 @@
 
     public statementId$ = this.store.pipe(select(queryParamsIdSelector));
 
-    public attachments$ = this.store.pipe(select(getStatementAttachmentsSelector));
+    public attachments$ = defer(() => this.store.pipe(
+        select(getStatementAttachmentsSelector, {
+            restrictedTagIds: this.appRestrictedTagIds,
+            forbiddenTagIds: this.appForbiddenTagIds
+        })
+    ));
 
     public fileCache$ = this.store.pipe(select(getStatementFileCacheSelector));
 
@@ -60,7 +73,9 @@
         super();
     }
 
-    public ngOnInit() {
+    public async ngOnInit() {
+        // This await is required to avoid the ExpressionChangedAfterItHasBeenCheckedError:
+        await Promise.resolve();
         this.filterAttachmentsInCurrentValue();
         this.updateFiles();
     }
@@ -85,15 +100,17 @@
             const value = this.getValue();
             this.patchValue({
                 ...value,
-                removeAttachments: arrayJoin(value.removeAttachments)
-                    .filter((id) => attachments.some((_) => id === _.id))
+                edit: arrayJoin(value.edit).filter((_) => {
+                    return attachments.some((attachment) => _.attachment === attachment.id);
+                })
             });
         });
     }
 
     private updateFiles() {
         this.fileCache$.pipe(takeUntil(this.destroy$)).subscribe((files) => {
-            this.patchValue({addAttachments: files});
+            const add = files;
+            this.patchValue({add});
         });
     }
 
diff --git a/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.html b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.html
new file mode 100644
index 0000000..392b619
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.html
@@ -0,0 +1,70 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<mat-drawer-container [formGroup]="appFormGroup"
+                      [hasBackdrop]="false"
+                      class="editor--arrangement">
+  <mat-drawer-content class="editor--arangement--content">
+    <div #cdkDropListRef="cdkDropList"
+         (cdkDropListDropped)="drop($event)"
+         [cdkDropListConnectedTo]="textBlockSelectComponent.dropList"
+         [cdkDropListData]="appControls"
+         [formArrayName]="'arrangement'"
+         cdkDropList
+         class="editor--arrangement--panel">
+
+      <app-text-block-control
+        (appAdd)="add($event,i + 1)"
+        (appRemove)="remove(i)"
+        (cdkDragEnded)="isDragging = false"
+        (cdkDragReleased)="isDragging = false"
+        (cdkDragStarted)="isDragging = true"
+        *ngFor="let control of appControls; let i = index; trackBy: trackBy;"
+        [appErrors]="appFormGroup | getFormError : 'arrangement' : 'arrangement' : i | errorToMessages"
+        [appReplacements]="control.replacements"
+        [appSelects]="control.selects"
+        [appTextBlockModel]="control.textBlock"
+        [formControlName]="i"
+        cdkDrag
+        [cdkDragDisabled]="appFormGroup.disabled"
+        class="grab">
+      </app-text-block-control>
+
+    </div>
+
+    <div class="editor--arrangement--panel editor--arrangement--panel---border-left">
+      <app-text-block-select
+        #textBlockSelectComponent
+        (appAdd)="addTextBlock($event)"
+        (appRemove)="remove($event)"
+        [appConnectedTo]="cdkDropListRef"
+        [appGroups]="appTextBlockGroups"
+        [appSelectedIds]="appSelectedTextBlockIds"
+        [appShortMode]="appShortMode">
+      </app-text-block-select>
+    </div>
+  </mat-drawer-content>
+
+  <mat-drawer [(opened)]="appShowPreview" [autoFocus]="false" [position]="'end'" class="editor--arrangement--preview">
+    <div class="editor--arrangement--preview--text">
+      <app-statement-preview
+        [appTextArrangements]="appControls | arrangementToPreview | combineBlockdataText"></app-statement-preview>
+    </div>
+  </mat-drawer>
+
+</mat-drawer-container>
+
+<ng-container
+  *ngIf="isDragging"
+  [appGlobalClass]="'grabbing'">
+</ng-container>
diff --git a/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.scss b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.scss
new file mode 100644
index 0000000..17c0497
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.scss
@@ -0,0 +1,67 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+@import "openk.styles";
+
+:host {
+  display: block;
+  box-sizing: border-box;
+  width: 100%;
+  height: calc(100vh - 20em);
+}
+
+.editor--arrangement {
+  display: flex;
+  flex-direction: row;
+  height: 100%;
+}
+
+.editor--arangement--content {
+  display: flex;
+  flex-direction: row;
+  flex: 1;
+}
+
+.editor--arrangement--panel {
+  flex: 0 1 50%;
+  padding: 0.5em 0.5em 0 0.5em;
+  overflow: auto;
+  box-sizing: border-box;
+
+  & > * {
+    margin-bottom: 0.5em;
+  }
+}
+
+.editor--arrangement--panel---border-left {
+  border-left: 1px solid $openk-form-border;
+}
+
+.editor--arrangement--preview {
+  width: 50%;
+  border-left: 1px solid $openk-form-border;
+}
+
+.editor--arrangement--preview--text {
+  padding: 1em;
+}
+
+.mat-drawer:not(.mat-drawer-side) {
+  box-shadow: unset;
+}
+
+.mat-drawer-container {
+  background-color: unset;
+}
+
+
diff --git a/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.spec.ts b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.spec.ts
new file mode 100644
index 0000000..c0b0016
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.spec.ts
@@ -0,0 +1,148 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CdkDragDrop} from "@angular/cdk/drag-drop";
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {FormArray} from "@angular/forms";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {provideMockStore} from "@ngrx/store/testing";
+import {IAPITextArrangementItemModel} from "../../../../../core/api/text";
+import {I18nModule} from "../../../../../core/i18n";
+import {IExtendedTextBlockModel} from "../../../../../shared/text-block/model";
+import {StatementEditorModule} from "../../statement-editor.module";
+import {ArrangementFormGroupComponent} from "./arrangement-form-group.component";
+
+describe("ArrangementFormGroupComponent", () => {
+    let component: ArrangementFormGroupComponent;
+    let fixture: ComponentFixture<ArrangementFormGroupComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                StatementEditorModule,
+                BrowserAnimationsModule,
+                I18nModule
+            ],
+            providers: [
+                provideMockStore()
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(ArrangementFormGroupComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    const arrangement: IAPITextArrangementItemModel = {
+        type: "newline",
+        placeholderValues: {}
+    };
+    const anotherArrangement: IAPITextArrangementItemModel = {
+        type: "pagebreak",
+        placeholderValues: {}
+    };
+
+    it("should create", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should add the itemmodel to the control", () => {
+        const control: FormArray = component.getArrangementControl();
+        expect(control.length).toEqual(0);
+
+        component.add(arrangement);
+        expect(control.length).toEqual(1);
+
+        component.add(arrangement);
+        expect(control.length).toEqual(2);
+
+        component.add(anotherArrangement, 1);
+        expect(control.length).toEqual(3);
+        expect(control.value[1]).toBe(anotherArrangement);
+    });
+
+    it("should get the formcontrol at the given index", () => {
+        component.add(arrangement);
+
+        const control = component.getControl(0);
+        expect(control.value).toEqual(arrangement);
+    });
+
+    it("should remove the element at the given index", () => {
+        component.add(arrangement);
+        component.add(arrangement);
+        component.remove(1);
+        component.remove(0);
+        const control: FormArray = component.getArrangementControl();
+        expect(control.length).toEqual(0);
+    });
+
+    it("should move the element from index to target index", () => {
+        component.add(arrangement);
+        component.add(anotherArrangement);
+        const firstControl = component.getControl(0);
+        expect(firstControl.value).toEqual(arrangement);
+        const secondControl = component.getControl(1);
+        expect(secondControl.value).toEqual(anotherArrangement);
+
+        component.move(1, 0);
+        const controlAfterMove = component.getControl(1);
+        expect(controlAfterMove.value).toEqual(arrangement);
+    });
+
+    it("should add a text arrangement model from a blockmodel", () => {
+        const textBlock: IExtendedTextBlockModel = {
+            id: "id",
+            text: "text",
+            excludes: [],
+            requires: []
+        };
+        const control: FormArray = component.getArrangementControl();
+        expect(control.length).toEqual(0);
+
+        component.addTextBlock(textBlock);
+        expect(control.length).toEqual(1);
+        const firstControl = component.getControl(0);
+        expect(firstControl.value.textblockId).toEqual(textBlock.id);
+
+        component.addTextBlock(undefined);
+        expect(control.length).toEqual(1);
+
+        component.addTextBlock({...textBlock, type: "newline"});
+        const secondControl = component.getControl(1);
+        expect(secondControl.value.textblockId).toEqual(undefined);
+    });
+
+    it("should call move when dropped inside same container, otherwise add", () => {
+        spyOn(component, "move");
+        const container = {};
+        const event: CdkDragDrop<any> = {
+            previousContainer: container,
+            container,
+            currentIndex: 0,
+            previousIndex: 1,
+            item: {
+                data: {}
+            }
+        } as CdkDragDrop<any>;
+        component.drop(event);
+        expect(component.move).toHaveBeenCalledWith(1, 0);
+
+        spyOn(component, "addTextBlock");
+        const eventDifferentContainers: CdkDragDrop<any> = {...event, container: {}} as CdkDragDrop<any>;
+        component.drop(eventDifferentContainers);
+        expect(component.addTextBlock).toHaveBeenCalledWith(eventDifferentContainers.item.data, 0);
+    });
+});
diff --git a/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.ts b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.ts
new file mode 100644
index 0000000..aa792a4
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/arrangement-form-group/arrangement-form-group.component.ts
@@ -0,0 +1,128 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+
+import {CdkDragDrop} from "@angular/cdk/drag-drop";
+import {Component, Input} from "@angular/core";
+import {FormArray, FormControl, FormGroup} from "@angular/forms";
+import {IAPITextArrangementErrorModel, IAPITextArrangementItemModel, IAPITextBlockGroupModel} from "../../../../../core/api/text";
+import {IExtendedTextBlockModel} from "../../../../../shared/text-block/model";
+import {IStatementEditorControlConfiguration, IStatementEditorFormValue} from "../../../../../store/statements/model";
+import {createFormGroup} from "../../../../../util/forms";
+import {arrayJoin} from "../../../../../util/store";
+import {AbstractReactiveFormComponent} from "../../../abstract";
+
+@Component({
+    selector: "app-arrangement-form-group",
+    templateUrl: "./arrangement-form-group.component.html",
+    styleUrls: ["./arrangement-form-group.component.scss"]
+})
+export class ArrangementFormGroupComponent extends AbstractReactiveFormComponent<IStatementEditorFormValue> {
+
+    @Input()
+    public appFormGroup: FormGroup = createFormGroup<IStatementEditorFormValue>({
+        arrangement: new FormArray([])
+    });
+
+    @Input()
+    public appControls: IStatementEditorControlConfiguration[];
+
+    @Input()
+    public appSelectedTextBlockIds: string[];
+
+    @Input()
+    public appTextBlockGroups: IAPITextBlockGroupModel[];
+
+    @Input()
+    public appShortMode: boolean;
+
+    @Input()
+    public appShowPreview: boolean;
+
+    public isDragging = false;
+
+    @Input()
+    public set appArrangementValue(value: IAPITextArrangementItemModel[]) {
+        this.getArrangementControl().clear();
+        arrayJoin(value).forEach((item) => this.add(item));
+    }
+
+    @Input()
+    public set appArrangementError(list: IAPITextArrangementErrorModel[]) {
+        this.getArrangementControl()?.controls
+            .forEach((control) => control.setErrors({arrangement: null}));
+        arrayJoin(list).forEach((error) => {
+            this.appFormGroup.get(["arrangement", error.arrangementId])?.setErrors({arrangement: error});
+        });
+        this.getArrangementControl().updateValueAndValidity();
+    }
+
+    public trackBy = (index: number) => {
+        const control = this.getArrangementControl();
+        return control == null ? index : control.at(index);
+        // tslint:disable-next-line:semicolon
+    };
+
+    public getArrangementControl(): FormArray {
+        const formArray = this.appFormGroup.get("arrangement");
+        return formArray instanceof FormArray ? formArray : undefined;
+    }
+
+    public getControl(index: number) {
+        return this.getArrangementControl().get([index]);
+    }
+
+    public add(value: IAPITextArrangementItemModel, index?: number) {
+        const control = this.getArrangementControl();
+        control.insert(index == null ? control.length : index, new FormControl(value));
+    }
+
+    public remove(index: number) {
+        this.getArrangementControl().removeAt(index);
+    }
+
+    public move(index: number, targetIndex: number) {
+        const control = this.getControl(index);
+        this.getArrangementControl().removeAt(index);
+        this.getArrangementControl().insert(targetIndex, control);
+    }
+
+    public drop(event: CdkDragDrop<any>) {
+        if (event.previousContainer !== event.container) {
+            this.addTextBlock(event.item?.data, event.currentIndex);
+        }
+        if (event.previousContainer === event.container) {
+            this.move(event.previousIndex, event.currentIndex);
+        }
+    }
+
+    public addTextBlock(block: IExtendedTextBlockModel, index?: number) {
+        if (block == null) {
+            return;
+        }
+
+        const {type, id} = block;
+        if (type == null || type === "block") {
+            if (id != null) {
+                this.add({type: "block", textblockId: id, placeholderValues: {}}, index);
+            }
+        } else {
+            this.add({type, placeholderValues: {}, replacement: type === "text" ? "" : undefined}, index);
+        }
+    }
+
+}
+
+
+
+
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/features/forms/statement-editor/components/arrangement-form-group/index.ts
similarity index 91%
rename from src/app/features/edit/components/edit-negative-answer/index.ts
rename to src/app/features/forms/statement-editor/components/arrangement-form-group/index.ts
index 7378646..3eb3be8 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/features/forms/statement-editor/components/arrangement-form-group/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./arrangement-form-group.component";
diff --git a/src/app/features/index.ts b/src/app/features/forms/statement-editor/components/index.ts
similarity index 78%
rename from src/app/features/index.ts
rename to src/app/features/forms/statement-editor/components/index.ts
index cf992ef..0531a66 100644
--- a/src/app/features/index.ts
+++ b/src/app/features/forms/statement-editor/components/index.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./navigation";
-export * from "./dashboard";
-export * from "./details";
-export * from "./new";
+export * from "./arrangement-form-group";
+export * from "./statement-editor-form";
+export * from "./statement-preview";
+export * from "./text-block-control";
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/features/forms/statement-editor/components/statement-editor-form/index.ts
similarity index 91%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/features/forms/statement-editor/components/statement-editor-form/index.ts
index 7378646..a9c6da2 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/features/forms/statement-editor/components/statement-editor-form/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./statement-editor-form.component";
diff --git a/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.html b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.html
new file mode 100644
index 0000000..0aea60c
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.html
@@ -0,0 +1,76 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<app-collapsible
+  [appHeaderTemplateRef]="arrangementHeaderRef"
+  [appTitle]="'Entwurf'"
+  [formGroup]="appFormGroup">
+
+  <app-arrangement-form-group
+    [appArrangementError]="arrangementError$ | async"
+    [appArrangementValue]="arrangement$ | async"
+    [appControls]="controls$ | async"
+    [appFormGroup]="appFormGroup"
+    [appSelectedTextBlockIds]="selectedTextBlockIds$ | async"
+    [appShortMode]="appShortMode"
+    [appShowPreview]="appShowPreview"
+    [appTextBlockGroups]="textBlockGroups$ | async">
+  </app-arrangement-form-group>
+
+</app-collapsible>
+
+<app-collapsible
+  [appCollapsed]="false"
+  [appTitle]="'Anhänge'">
+
+  <app-attachments-form-group
+    [appAutoTagIds]="[outboxTagId]"
+    [appFormGroup]="appFormGroup | getFormGroup: 'attachments'"
+    [appRestrictedTagIds]="[outboxTagId]"
+    [appWithoutTagControl]="true">
+  </app-attachments-form-group>
+
+</app-collapsible>
+
+<div class="editor--buttons">
+
+  <button (click)="validate()" class="openk-button openk-info">Validate</button>
+
+  <button (click)="compile()" class="openk-button openk-info">Compile</button>
+
+  <button (click)="submit()" class="openk-button openk-info">Submit</button>
+
+  <button (click)="complete(true)" class="openk-button openk-success">Complete</button>
+
+</div>
+
+<ng-template #arrangementHeaderRef>
+  <div class="editor--arrangement--header">
+    <button (click)="appShortMode = !appShortMode"
+            class="openk-button editor--arrangement--header--button"
+            type="button">
+      <mat-icon class="editor--arrangement--header--button--icon">
+        {{appShortMode ? "unfold_more" : "unfold_less"}}
+      </mat-icon>
+    </button>
+
+    <button (click)="appShowPreview = !appShowPreview"
+            class="openk-button editor--arrangement--header--button"
+            type="button">
+      <mat-icon class="editor--arrangement--header--button--icon">
+        {{appShowPreview ? "chevron_right" : "chevron_left"}}
+      </mat-icon>
+    </button>
+  </div>
+
+</ng-template>
diff --git a/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.scss b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.scss
new file mode 100644
index 0000000..96f25ac
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.scss
@@ -0,0 +1,61 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+@import "openk.styles";
+
+:host {
+  display: flex;
+  flex-flow: column;
+
+  & > * {
+    margin-bottom: 1em;
+  }
+}
+
+.editor--arrangement--header {
+  display: flex;
+  justify-content: flex-end;
+  align-content: center;
+  margin-right: 0.125em;
+}
+
+.editor--arrangement--header--button {
+  border: 0;
+  padding: 0.1em;
+
+  background: none;
+  font-size: 1.25em;
+  border-radius: 50%;
+  margin-left: 0.25em;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.editor--arrangement--header--button--icon {
+  border: 0;
+  padding: 0;
+  background: none;
+  width: initial;
+  height: initial;
+  font-size: 1em;
+}
+
+.editor--buttons {
+  display: flex;
+  margin-left: auto;
+
+  & > * {
+    margin-left: 0.5em;
+  }
+}
diff --git a/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.spec.ts b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.spec.ts
new file mode 100644
index 0000000..5e7e3a4
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.spec.ts
@@ -0,0 +1,89 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {Store} from "@ngrx/store";
+import {provideMockStore} from "@ngrx/store/testing";
+import {I18nModule} from "../../../../../core/i18n";
+import {taskSelector} from "../../../../../store/process/selectors";
+import {
+    compileStatementArrangementAction,
+    submitStatementEditorFormAction,
+    validateStatementArrangementAction
+} from "../../../../../store/statements/actions";
+import {StatementEditorModule} from "../../statement-editor.module";
+import {StatementEditorFormComponent} from "./statement-editor-form.component";
+
+describe("StatementEditorFormComponent", () => {
+    let store: Store;
+    let component: StatementEditorFormComponent;
+    let fixture: ComponentFixture<StatementEditorFormComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                StatementEditorModule,
+                BrowserAnimationsModule,
+                I18nModule
+            ],
+            providers: [
+                provideMockStore({
+                    initialState: {},
+                    selectors: [
+                        {
+                            selector: taskSelector,
+                            value: {
+                                taskId: "taskId",
+                                statementId: 1
+                            }
+                        }
+                    ]
+                })
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(StatementEditorFormComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+        store = fixture.componentRef.injector.get(Store);
+    });
+
+    it("should create", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should dispatch validateStatementArrangementAction on validate", async () => {
+        const dispatchSpy = spyOn(store, "dispatch");
+        await component.validate();
+        expect(dispatchSpy).toHaveBeenCalledWith(
+            validateStatementArrangementAction({statementId: 1, taskId: "taskId", arrangement: []}));
+    });
+
+    it("should dispatch compileStatementArrangementAction on compile", async () => {
+        const dispatchSpy = spyOn(store, "dispatch");
+        await component.compile();
+        expect(dispatchSpy).toHaveBeenCalledWith(
+            compileStatementArrangementAction({statementId: 1, taskId: "taskId", arrangement: []}));
+    });
+
+    it("should dispatch submitStatementEditorFormAction on submit", async () => {
+        const dispatchSpy = spyOn(store, "dispatch");
+        await component.submit();
+        expect(dispatchSpy).toHaveBeenCalledWith(
+            submitStatementEditorFormAction(
+                {statementId: 1, taskId: "taskId", value: {arrangement: [], attachments: {edit: [], add: []}}}));
+    });
+});
diff --git a/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.stories.ts b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.stories.ts
new file mode 100644
index 0000000..37f8f21
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.stories.ts
@@ -0,0 +1,57 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {RouterTestingModule} from "@angular/router/testing";
+import {provideMockStore} from "@ngrx/store/testing";
+import {moduleMetadata, storiesOf} from "@storybook/angular";
+import {I18nModule} from "../../../../../core/i18n";
+import {getStatementTextConfigurationSelector, statementArrangementSelector} from "../../../../../store";
+import {createStatementTextConfigurationMock} from "../../../../../test";
+import {StatementEditorModule} from "../../statement-editor.module";
+import {StatementEditorFormComponent} from "./statement-editor-form.component";
+
+const configuration = createStatementTextConfigurationMock();
+
+const arrangement = [];
+
+storiesOf("Features / Forms", module)
+    .addDecorator(moduleMetadata({
+        imports: [
+            I18nModule,
+            RouterTestingModule,
+            StatementEditorModule,
+            BrowserAnimationsModule
+        ],
+        providers: [
+            provideMockStore({
+                selectors: [
+                    {
+                        selector: getStatementTextConfigurationSelector,
+                        value: configuration
+                    },
+                    {
+                        selector: statementArrangementSelector,
+                        value: arrangement
+                    }
+                ]
+            })
+        ]
+    }))
+    .add("StatementEditorFormComponent", () => ({
+        template: `
+            <app-statement-editor-form style="padding: 1em; box-sizing: border-box">
+            </app-statement-editor-form>
+        `,
+        props: {}
+    }));
diff --git a/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.ts b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.ts
new file mode 100644
index 0000000..90dc27f
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-editor-form/statement-editor-form.component.ts
@@ -0,0 +1,141 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Component, OnInit} from "@angular/core";
+import {FormArray, FormControl} from "@angular/forms";
+import {select, Store} from "@ngrx/store";
+import {Observable} from "rxjs";
+import {filter, map, switchMap, take, takeUntil} from "rxjs/operators";
+import {EAPIStaticAttachmentTagIds, IAPIProcessObject} from "../../../../../core";
+import {
+    compileStatementArrangementAction,
+    completeTaskAction,
+    fetchStatementTextArrangementAction,
+    getStatementArrangementErrorSelector,
+    getStatementEditorControlConfigurationSelector,
+    getStatementLoadingSelector,
+    getStatementTextBlockGroups,
+    IAttachmentFormValue,
+    IStatementEditorFormValue,
+    statementArrangementSelector,
+    submitStatementEditorFormAction,
+    taskSelector,
+    validateStatementArrangementAction
+} from "../../../../../store";
+import {arrayJoin, createFormGroup, filterDistinctValues} from "../../../../../util";
+import {AbstractReactiveFormComponent} from "../../../abstract";
+
+@Component({
+    selector: "app-statement-editor-form",
+    templateUrl: "./statement-editor-form.component.html",
+    styleUrls: ["./statement-editor-form.component.scss"]
+})
+export class StatementEditorFormComponent extends AbstractReactiveFormComponent<IStatementEditorFormValue> implements OnInit {
+
+    public outboxTagId = EAPIStaticAttachmentTagIds.OUTBOX;
+
+    public appShortMode: boolean;
+
+    public appShowPreview: boolean;
+
+    public appFormGroup = createFormGroup<IStatementEditorFormValue>({
+        arrangement: new FormArray([]),
+        attachments: createFormGroup<IAttachmentFormValue>({
+            edit: new FormControl([]),
+            add: new FormControl([])
+        })
+    });
+
+    public task$ = this.store.pipe(select(taskSelector));
+
+    public controls$ = this.value$.pipe(
+        filter((value) => value != null),
+        switchMap((value) => {
+            return this.store.pipe(select(getStatementEditorControlConfigurationSelector, arrayJoin(value.arrangement)));
+        })
+    );
+
+    public selectedTextBlockIds$: Observable<string[]> = this.value$.pipe(
+        map((value) => filterDistinctValues(value.arrangement.map((item) => item.textblockId)))
+    );
+
+    public arrangement$ = this.store.pipe(select(statementArrangementSelector));
+
+    public textBlockGroups$ = this.store.pipe(select(getStatementTextBlockGroups));
+
+    public arrangementError$ = this.store.pipe(select(getStatementArrangementErrorSelector));
+
+    public statementLoading$ = this.store.pipe(select(getStatementLoadingSelector));
+
+    public constructor(public store: Store) {
+        super();
+    }
+
+    public ngOnInit() {
+        this.updateForm();
+        this.fetchTextArrangement();
+    }
+
+    public async validate() {
+        const task = await this.task$.pipe(take(1)).toPromise();
+        this.store.dispatch(validateStatementArrangementAction({
+            statementId: task.statementId,
+            taskId: task.taskId,
+            arrangement: this.getValue().arrangement
+        }));
+    }
+
+    public async compile() {
+        const task = await this.task$.pipe(take(1)).toPromise();
+        this.store.dispatch(compileStatementArrangementAction({
+            statementId: task.statementId,
+            taskId: task.taskId,
+            arrangement: this.getValue().arrangement
+        }));
+    }
+
+    public async submit() {
+        const task = await this.task$.pipe(take(1)).toPromise();
+        this.store.dispatch(submitStatementEditorFormAction({
+            statementId: task.statementId,
+            taskId: task.taskId,
+            value: this.getValue()
+        }));
+    }
+
+    public async complete(value: boolean) {
+        const task = await this.task$.pipe(take(1)).toPromise();
+        const variables: IAPIProcessObject = {};
+        Object.keys(task.requiredVariables)
+            .filter((name) => task.requiredVariables[name] === "Boolean")
+            .forEach((name) => variables[name] = {type: "Boolean", value});
+        this.store.dispatch(completeTaskAction({
+            statementId: task.statementId,
+            taskId: task.taskId,
+            claimNext: true,
+            variables
+        }));
+    }
+
+    private fetchTextArrangement() {
+        this.task$.pipe(takeUntil(this.destroy$), filter((task) => task != null))
+            .subscribe(({statementId}) => this.store.dispatch(fetchStatementTextArrangementAction({statementId})));
+    }
+
+    private updateForm() {
+        this.statementLoading$.subscribe((loading) => {
+            loading?.submittingStatementEditorForm ? this.appFormGroup.disable() : this.appFormGroup.enable();
+        });
+    }
+
+}
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/features/forms/statement-editor/components/statement-preview/index.ts
similarity index 91%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/features/forms/statement-editor/components/statement-preview/index.ts
index 7378646..310f169 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/features/forms/statement-editor/components/statement-preview/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./statement-preview.component";
diff --git a/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.html b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.html
new file mode 100644
index 0000000..f34eed7
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.html
@@ -0,0 +1,32 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<ng-container *ngFor="let block of appTextArrangements">
+
+  <span *ngIf="block.type === 'text'" class="text">
+    {{block.value}}
+  </span>
+
+  <ng-container *ngIf="block.type === 'newline'">
+    <br>
+  </ng-container>
+
+  <div *ngIf="block.type === 'pagebreak'" class="page-break">
+    <div class="page-break--line">
+    </div>
+    <span class="page-break--text">Seitenumbruch</span>
+    <div class="page-break--line">
+    </div>
+  </div>
+
+</ng-container>
diff --git a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.scss b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.scss
similarity index 63%
rename from src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.scss
rename to src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.scss
index 44850d8..301e8c8 100644
--- a/src/app/features/edit/components/edit-negative-answer/edit-negative-answer.component.scss
+++ b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.scss
@@ -13,26 +13,26 @@
 
 @import "openk.styles";
 
-:host {
-  display: flex;
-  flex-flow: column;
-  padding: 1em;
+.page-break {
+  display: inline-flex;
+  flex-direction: row;
+  margin: 0.5em 0 0.5em 0;
   align-items: center;
-}
-
-.edit-negative-answer {
-  margin-top: 1em;
-  max-width: 35em;
   width: 100%;
 }
 
-textarea {
-  max-width: 100%;
-  margin-top: 0.5em;
-  box-sizing: border-box;
-  height: 10em;
+.page-break--line {
+  width: 100%;
+  border-bottom: 1px solid get-color($openk-default-palette, 900);
 }
 
-.submit-button {
-  margin: 1em 0 0 auto;
+.page-break--text {
+  padding: 0 0.7em;
+  font-style: italic;
+  color: get-color($openk-default-palette, 900);
+}
+
+.text {
+  padding: 0 0.5em 0 0.5em;
+  display: inline-block;
 }
diff --git a/src/app/pages/dashboard/components/dashboard/dashboard.component.spec.ts b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.spec.ts
similarity index 65%
rename from src/app/pages/dashboard/components/dashboard/dashboard.component.spec.ts
rename to src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.spec.ts
index 9134bc7..51f1044 100644
--- a/src/app/pages/dashboard/components/dashboard/dashboard.component.spec.ts
+++ b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.spec.ts
@@ -12,23 +12,23 @@
  ********************************************************************************/
 
 import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {provideMockStore} from "@ngrx/store/testing";
-import {DashboardComponent} from "./dashboard.component";
+import {StatementEditorModule} from "../../statement-editor.module";
+import {StatementPreviewComponent} from "./statement-preview.component";
 
-describe("DashboardComponent", () => {
-    let component: DashboardComponent;
-    let fixture: ComponentFixture<DashboardComponent>;
+describe("StatementPreviewComponent", () => {
+    let component: StatementPreviewComponent;
+    let fixture: ComponentFixture<StatementPreviewComponent>;
 
     beforeEach(async(() => {
         TestBed.configureTestingModule({
-            declarations: [DashboardComponent],
-            providers: [provideMockStore({})]
-        })
-            .compileComponents();
+            imports: [
+                StatementEditorModule
+            ]
+        }).compileComponents();
     }));
 
     beforeEach(() => {
-        fixture = TestBed.createComponent(DashboardComponent);
+        fixture = TestBed.createComponent(StatementPreviewComponent);
         component = fixture.componentInstance;
         fixture.detectChanges();
     });
diff --git a/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.stories.ts b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.stories.ts
new file mode 100644
index 0000000..270aa30
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.stories.ts
@@ -0,0 +1,46 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {RouterTestingModule} from "@angular/router/testing";
+import {moduleMetadata, storiesOf} from "@storybook/angular";
+import {I18nModule} from "../../../../../core/i18n";
+import {StatementEditorModule} from "../../statement-editor.module";
+
+const arrangements: any[] = [
+    {type: "text", value: "Ein Text Test."},
+    {type: "newline", value: ""},
+    {type: "pagebreak", value: ""},
+    {type: "text", value: "Ein weiterer Text."}
+];
+
+
+storiesOf("Features / Forms", module)
+    .addDecorator(moduleMetadata({
+        imports: [
+            I18nModule,
+            RouterTestingModule,
+            StatementEditorModule,
+            BrowserAnimationsModule
+        ],
+        providers: []
+    }))
+    .add("StatementPreviewComponent", () => ({
+        template: `
+            <app-statement-preview [appTextArrangements]="arrangements">
+            </app-statement-preview>
+        `,
+        props: {
+            arrangements
+        }
+    }));
diff --git a/src/app/shared/page-header/component/page-header.component.ts b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.ts
similarity index 65%
rename from src/app/shared/page-header/component/page-header.component.ts
rename to src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.ts
index 66f87db..dd40a41 100644
--- a/src/app/shared/page-header/component/page-header.component.ts
+++ b/src/app/features/forms/statement-editor/components/statement-preview/statement-preview.component.ts
@@ -12,19 +12,16 @@
  ********************************************************************************/
 
 import {Component, Input} from "@angular/core";
-import {IPageHeaderAction} from "./IPageHeaderActions";
+import {ITextBlockRenderItem} from "../../../../../shared/text-block/model/ITextBlockRenderItem";
+
 
 @Component({
-    selector: "app-page-header",
-    templateUrl: "./page-header.component.html",
-    styleUrls: ["./page-header.component.scss"]
+    selector: "app-statement-preview",
+    templateUrl: "./statement-preview.component.html",
+    styleUrls: ["./statement-preview.component.scss"]
 })
-export class PageHeaderComponent {
+export class StatementPreviewComponent {
 
     @Input()
-    public appTitle: string;
-
-    @Input()
-    public appActions: IPageHeaderAction[];
-
+    public appTextArrangements: ITextBlockRenderItem[];
 }
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/features/forms/statement-editor/components/text-block-control/index.ts
similarity index 91%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/features/forms/statement-editor/components/text-block-control/index.ts
index 7378646..f1f8fb3 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/features/forms/statement-editor/components/text-block-control/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./text-block-control.component";
diff --git a/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.html b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.html
new file mode 100644
index 0000000..08fbb5a
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.html
@@ -0,0 +1,25 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+<app-text-block
+  (appButtonPress)="appRemove.emit(appValue.textblockId)"
+  (appNewLine)="addNewLine()"
+  (appChangeText)="setReplacement($event)"
+  (appTextInput)="convertToFreeText()"
+  (appValueChange)="addPlaceholder($event)"
+  [appTextBlockData]="appValue | getBlockDataFromArrangement: appTextBlockModel: appValue?.placeholderValues: appReplacements: appSelects"
+  [appErrors]="appErrors"
+  [appShowClose]="true"
+  [appTitle]="appValue | getTitle"
+  [appBlockText]="appValue?.replacement"
+  [appType]="appValue?.type">
+</app-text-block>
diff --git a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.scss b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.scss
similarity index 94%
rename from src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.scss
rename to src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.scss
index 06db89a..8f82753 100644
--- a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.scss
+++ b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.scss
@@ -11,3 +11,6 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
+:host {
+  display: block;
+}
diff --git a/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.spec.ts b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.spec.ts
new file mode 100644
index 0000000..34a25e8
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.spec.ts
@@ -0,0 +1,87 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {IAPITextArrangementItemModel, IAPITextBlockModel} from "../../../../../core/api/text";
+import {I18nModule} from "../../../../../core/i18n";
+import {StatementEditorModule} from "../../statement-editor.module";
+import {TextBlockControlComponent} from "./text-block-control.component";
+
+describe("TextBlockControlComponent", () => {
+    let component: TextBlockControlComponent;
+    let fixture: ComponentFixture<TextBlockControlComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                StatementEditorModule,
+                I18nModule
+            ],
+            declarations: [TextBlockControlComponent]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(TextBlockControlComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it("should create", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should emit appAdd with a newline block", () => {
+        spyOn(component.appAdd, "emit").and.callThrough();
+        component.addNewLine();
+        expect(component.appAdd.emit).toHaveBeenCalledWith({type: "newline", placeholderValues: {}});
+    });
+
+    it("should set new value for the placeholder", () => {
+        const replacement: { name: string, newValue: string } = {
+            name: "name",
+            newValue: "newValue"
+        };
+        component.addPlaceholder(replacement);
+        expect(component.appValue.placeholderValues).toEqual({name: "newValue"});
+
+        component.addPlaceholder({...replacement, newValue: "value"});
+        expect(component.appValue.placeholderValues).toEqual({name: "value"});
+    });
+
+    it("should keep replacement text if there is one", () => {
+        const value: IAPITextArrangementItemModel = {type: "block", placeholderValues: {}};
+        component.appValue = value;
+        component.convertToFreeText();
+        expect(component.appValue).toEqual({...value, replacement: ""});
+
+        const replacement = "replacement";
+        component.appValue.replacement = replacement;
+        component.convertToFreeText();
+        expect(component.appValue).toEqual({...value, replacement});
+
+        component.appValue.replacement = undefined;
+        const textBlockModel: IAPITextBlockModel = {id: "1", text: "text block text", excludes: [], requires: []};
+        component.appTextBlockModel = textBlockModel;
+        component.convertToFreeText();
+        expect(component.appValue).toEqual({...value, replacement: textBlockModel.text});
+    });
+
+    it("should keep replacement text if there is one", () => {
+        component.appValue = undefined;
+        const replacement = "replacement";
+        component.setReplacement(replacement);
+        expect(component.appValue).toEqual({replacement} as IAPITextArrangementItemModel);
+    });
+
+});
diff --git a/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.ts b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.ts
new file mode 100644
index 0000000..b78e2ec
--- /dev/null
+++ b/src/app/features/forms/statement-editor/components/text-block-control/text-block-control.component.ts
@@ -0,0 +1,80 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Component, EventEmitter, forwardRef, Input, Output} from "@angular/core";
+import {NG_VALUE_ACCESSOR} from "@angular/forms";
+import {IAPITextArrangementItemModel, IAPITextBlockModel} from "../../../../../core";
+import {AbstractControlValueAccessorComponent} from "../../../../../shared/controls/common";
+import {ITextblockError} from "../../pipes";
+
+@Component({
+    selector: "app-text-block-control",
+    templateUrl: "./text-block-control.component.html",
+    styleUrls: ["./text-block-control.component.scss"],
+    providers: [
+        {
+            provide: NG_VALUE_ACCESSOR,
+            useExisting: forwardRef(() => TextBlockControlComponent),
+            multi: true
+        }
+    ]
+})
+export class TextBlockControlComponent extends AbstractControlValueAccessorComponent<IAPITextArrangementItemModel> {
+
+    @Input()
+    public appTextBlockModel: IAPITextBlockModel;
+
+    @Input()
+    public appSelects: { [key: string]: string[] };
+
+    @Input()
+    public appReplacements: { [key: string]: string };
+
+    @Input()
+    public appErrors: ITextblockError[];
+
+    @Output()
+    public appRemove: EventEmitter<string> = new EventEmitter();
+
+    @Output()
+    public appAdd: EventEmitter<IAPITextArrangementItemModel> = new EventEmitter();
+
+    public addPlaceholder(replacement: { name: string, newValue: string }) {
+        this.writeValue({
+            ...this.appValue,
+            placeholderValues: {
+                ...this.appValue?.placeholderValues,
+                [replacement.name]: replacement.newValue
+            }
+        }, true);
+    }
+
+    public convertToFreeText() {
+        const replacementText = this.appValue?.replacement ? this.appValue.replacement : this.appTextBlockModel?.text;
+        this.writeValue({
+            ...this.appValue,
+            replacement: replacementText ? replacementText : ""
+        }, true);
+    }
+
+    public setReplacement(text: string) {
+        this.writeValue({
+            ...this.appValue,
+            replacement: text
+        }, true);
+    }
+
+    public addNewLine() {
+        this.appAdd.emit({type: "newline", placeholderValues: {}});
+    }
+}
diff --git a/src/app/shared/select/index.ts b/src/app/features/forms/statement-editor/index.ts
similarity index 89%
copy from src/app/shared/select/index.ts
copy to src/app/features/forms/statement-editor/index.ts
index 379f4ab..8b5140b 100644
--- a/src/app/shared/select/index.ts
+++ b/src/app/features/forms/statement-editor/index.ts
@@ -13,6 +13,4 @@
 
 export * from "./components";
 export * from "./pipes";
-
-export * from "./ISelectOption";
-export * from "./select.module";
+export * from "./statement-editor.module";
diff --git a/src/app/features/forms/statement-editor/pipes/arrangement-to-preview.pipe.spec.ts b/src/app/features/forms/statement-editor/pipes/arrangement-to-preview.pipe.spec.ts
new file mode 100644
index 0000000..499b328
--- /dev/null
+++ b/src/app/features/forms/statement-editor/pipes/arrangement-to-preview.pipe.spec.ts
@@ -0,0 +1,92 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {ITextBlockRenderItem} from "../../../../shared/text-block/model/ITextBlockRenderItem";
+import {IStatementEditorControlConfiguration} from "../../../../store/statements/model";
+import {ArrangementToPreviewPipe} from "./arrangement-to-preview.pipe";
+
+describe("ArrangementToPreviewPipe", () => {
+
+    const pipe = new ArrangementToPreviewPipe();
+
+    const textItems: ITextBlockRenderItem[] = [
+        {type: "text", value: "Ein Text mit folgendem zu ersetzenden Wert INSERT_VALUE INSERT_INPUT_VALUE"},
+        {type: "text", value: "Freitext"},
+        {type: "newline", value: ""},
+        {type: "pagebreak", value: ""}
+    ];
+
+    const configurations: IStatementEditorControlConfiguration[] = [
+        {
+            textBlock: {
+                id: "textBlockId",
+                text: "Ein Text mit folgendem zu ersetzenden Wert <t:test> <f:testing>",
+                excludes: [],
+                requires: []
+            },
+            selects: {},
+            replacements: {
+                test: "INSERT_VALUE"
+            },
+            value: {
+                type: "block",
+                textblockId: "textBlockId",
+                placeholderValues: {
+                    testing: "INSERT_INPUT_VALUE"
+                }
+            }
+        },
+        {
+            selects: {},
+            replacements: {},
+            value: {
+                type: "text",
+                placeholderValues: {},
+                replacement: "Freitext"
+            }
+        },
+        {
+            selects: {},
+            replacements: {},
+            value: {
+                type: "newline",
+                placeholderValues: {}
+            }
+        },
+        {
+            selects: {},
+            replacements: {},
+            value: {
+                type: "pagebreak",
+                placeholderValues: {}
+            }
+        }
+    ];
+
+    it("should return an empty array if supplied with no data", () => {
+        let result = pipe.transform(undefined);
+        expect(result).toEqual([]);
+
+        result = pipe.transform(null);
+        expect(result).toEqual([]);
+    });
+
+    it("should convert the array of configurations to an array of TextBlockRenderItems", () => {
+        const result = pipe.transform(configurations);
+        expect(result).toBeTruthy();
+        // removes undefined properties
+        expect(JSON.parse(JSON.stringify(result))).toEqual(JSON.parse(JSON.stringify(textItems)));
+    });
+});
+
+
diff --git a/src/app/features/forms/statement-editor/pipes/arrangement-to-preview.pipe.ts b/src/app/features/forms/statement-editor/pipes/arrangement-to-preview.pipe.ts
new file mode 100644
index 0000000..b99ec85
--- /dev/null
+++ b/src/app/features/forms/statement-editor/pipes/arrangement-to-preview.pipe.ts
@@ -0,0 +1,70 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Pipe, PipeTransform} from "@angular/core";
+import {ITextBlockRenderItem} from "../../../../shared/text-block/model/ITextBlockRenderItem";
+import {replaceTags} from "../../../../shared/text-block/pipes/get-blockdata-array";
+import {IStatementEditorControlConfiguration} from "../../../../store/statements/model";
+import {arrayJoin} from "../../../../util/store";
+
+@Pipe({
+    name: "arrangementToPreview"
+})
+export class ArrangementToPreviewPipe implements PipeTransform {
+
+    public transform(config: IStatementEditorControlConfiguration[]): ITextBlockRenderItem[] {
+
+        const result: ITextBlockRenderItem[] = [];
+        for (const item of arrayJoin(config)) {
+            if (item.value?.type === "block" && item.textBlock != null) {
+                result.push({
+                    type: "text",
+                    value: this.replaceInText(item.textBlock.text, item.value?.placeholderValues, item.replacements)
+                });
+            }
+            if (item.value?.type === "text") {
+                result.push({
+                    type: "text",
+                    value: item.value.replacement ? item.value.replacement : ""
+                });
+            }
+            if (item.value?.type === "newline" || item.value?.type === "pagebreak") {
+                result.push({
+                    type: item.value.type,
+                    value: ""
+                });
+            }
+        }
+
+        return replaceTags(result, [
+            {separator: /(\n)/, type: "newline"}
+        ]);
+    }
+
+    public replaceInText(text: string, placeholderValues: { [key: string]: string } = {}, replacements: { [key: string]: string }): string {
+        let arrangementText: string = text;
+        let textToReplace: string[] = arrangementText.match(/<([fdts]):([0-9a-zA-Z_\\-]+)>/);
+
+        while (textToReplace != null) {
+
+            let replacementValue: string = textToReplace[1] === "t" ? replacements[textToReplace[2]] : placeholderValues[textToReplace[2]];
+            replacementValue = replacementValue ? replacementValue : "______";
+
+            arrangementText = arrangementText.replace(textToReplace[0], replacementValue);
+
+            textToReplace = arrangementText.match(/<([fdts]):([0-9a-zA-Z_\\-]+)>/);
+        }
+        return arrangementText;
+    }
+
+}
diff --git a/src/app/features/forms/statement-editor/pipes/error-to-messages.pipe.spec.ts b/src/app/features/forms/statement-editor/pipes/error-to-messages.pipe.spec.ts
new file mode 100644
index 0000000..04740d6
--- /dev/null
+++ b/src/app/features/forms/statement-editor/pipes/error-to-messages.pipe.spec.ts
@@ -0,0 +1,55 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextArrangementErrorModel} from "../../../../core/api/text";
+import {ErrorToMessagesPipe} from "./error-to-messages.pipe";
+
+describe("ErrorToMessagesPipe", () => {
+
+    const pipe = new ErrorToMessagesPipe();
+
+    const error: IAPITextArrangementErrorModel = {
+        arrangementId: 0,
+        textblockId: "string",
+        textblockGroup: "string",
+        missingVariables: ["14", "15", "16"],
+        requires: [{ids: ["5", "6", "7"], type: "and"}, {ids: ["8", "9", "10"], type: "or"}, {ids: ["11", "12", "13"], type: "xor"}],
+        excludes: ["2", "3", "4"],
+        after: "1"
+    };
+
+    it("should return an empty array if supplied with no data", () => {
+        let result = pipe.transform(undefined);
+        expect(result).toEqual([]);
+
+        result = pipe.transform(null);
+        expect(result).toEqual([]);
+    });
+
+    it("should convert the error model to an array of error messages in the right order", () => {
+        const result = pipe.transform(error);
+
+        expect(result).toBeTruthy();
+        expect(Array.isArray(result)).toBeTrue();
+        let ids = "";
+        for (const errorMessage of result) {
+            if (ids !== "") {
+                ids += ",";
+            }
+            ids += errorMessage.ids.toString();
+        }
+        expect(ids).toEqual("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16");
+    });
+});
+
+
diff --git a/src/app/features/forms/statement-editor/pipes/error-to-messages.pipe.ts b/src/app/features/forms/statement-editor/pipes/error-to-messages.pipe.ts
new file mode 100644
index 0000000..42bddf8
--- /dev/null
+++ b/src/app/features/forms/statement-editor/pipes/error-to-messages.pipe.ts
@@ -0,0 +1,81 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Pipe, PipeTransform} from "@angular/core";
+import {IAPITextArrangementErrorModel} from "../../../../core/api/text";
+import {arrayJoin} from "../../../../util/store";
+
+@Pipe({
+    name: "errorToMessages"
+})
+export class ErrorToMessagesPipe implements PipeTransform {
+
+    public transform(error: IAPITextArrangementErrorModel): ITextblockError[] {
+        const errorMessages: ITextblockError[] = [];
+
+        if (!error) {
+            return [];
+        }
+
+        if (error.after != null) {
+            errorMessages.push({
+                message: "textBlocks.errors.after",
+                ids: [error.after]
+            });
+        }
+        if (arrayJoin(error.excludes).length > 0) {
+            errorMessages.push({
+                message: "textBlocks.errors.excludes",
+                ids: error.excludes
+            });
+        }
+
+        arrayJoin(error.requires)
+            .filter((rule) => rule != null)
+            .forEach((rule) => {
+                const ids = arrayJoin(rule.ids);
+                switch (rule.type) {
+                    case "and":
+                        return errorMessages.push({
+                            message: "textBlocks.errors.requires",
+                            ids
+                        });
+                    case "or":
+                        return errorMessages.push({
+                            message: "textBlocks.errors.requiresAtleastOne",
+                            ids
+                        });
+                    case "xor":
+                        return errorMessages.push({
+                            message: "textBlocks.errors.requiresOne",
+                            ids
+                        });
+                }
+            });
+
+        if (arrayJoin(error.missingVariables).length > 0) {
+            errorMessages.push({
+                message: "textBlocks.errors.missingVariables",
+                ids: error.missingVariables
+            });
+        }
+
+        return errorMessages;
+    }
+
+}
+
+export interface ITextblockError {
+    message: string;
+    ids: string[];
+}
diff --git a/src/app/features/forms/statement-editor/pipes/get-title.pipe.spec.ts b/src/app/features/forms/statement-editor/pipes/get-title.pipe.spec.ts
new file mode 100644
index 0000000..2584cca
--- /dev/null
+++ b/src/app/features/forms/statement-editor/pipes/get-title.pipe.spec.ts
@@ -0,0 +1,46 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextArrangementItemModel} from "../../../../core/api/text";
+import {GetTitlePipe} from "./get-title.pipe";
+
+describe("GetTitlePipe", () => {
+
+    const pipe = new GetTitlePipe();
+
+    it("should return the correct title as string", () => {
+        const arrangement: IAPITextArrangementItemModel = {
+            type: "text",
+            placeholderValues: {}
+        };
+        let result = pipe.transform(arrangement);
+        expect(result).toEqual("textBlocks.standardBlocks.freeText");
+
+        result = pipe.transform({...arrangement, type: "pagebreak"});
+        expect(result).toEqual("textBlocks.standardBlocks.pagebreak");
+
+        result = pipe.transform({...arrangement, type: "newline"});
+        expect(result).toEqual("textBlocks.standardBlocks.newLine");
+
+        result = pipe.transform({...arrangement, type: "block"});
+        expect(result).toEqual(undefined);
+
+        result = pipe.transform({...arrangement, type: "block", textblockId: "textBlockId"});
+        expect(result).toEqual("textBlockId");
+
+        result = pipe.transform(undefined);
+        expect(result).toEqual(undefined);
+    });
+});
+
+
diff --git a/src/app/features/forms/statement-editor/pipes/get-title.pipe.ts b/src/app/features/forms/statement-editor/pipes/get-title.pipe.ts
new file mode 100644
index 0000000..58df3d4
--- /dev/null
+++ b/src/app/features/forms/statement-editor/pipes/get-title.pipe.ts
@@ -0,0 +1,35 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Pipe, PipeTransform} from "@angular/core";
+import {IAPITextArrangementItemModel} from "../../../../core/api/text";
+
+@Pipe({
+    name: "getTitle"
+})
+export class GetTitlePipe implements PipeTransform {
+
+    public transform(arrangement: IAPITextArrangementItemModel) {
+        switch (arrangement?.type) {
+            case "text":
+                return "textBlocks.standardBlocks.freeText";
+            case "newline":
+                return "textBlocks.standardBlocks.newLine";
+            case "pagebreak":
+                return "textBlocks.standardBlocks.pagebreak";
+        }
+
+        return arrangement?.textblockId;
+    }
+
+}
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/features/forms/statement-editor/pipes/index.ts
similarity index 81%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/features/forms/statement-editor/pipes/index.ts
index fc6c436..26ede77 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/features/forms/statement-editor/pipes/index.ts
@@ -11,7 +11,6 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
-}
+export * from "./get-title.pipe";
+export * from "./error-to-messages.pipe";
+export * from "./arrangement-to-preview.pipe";
diff --git a/src/app/features/forms/statement-editor/statement-editor.module.ts b/src/app/features/forms/statement-editor/statement-editor.module.ts
new file mode 100644
index 0000000..03208a8
--- /dev/null
+++ b/src/app/features/forms/statement-editor/statement-editor.module.ts
@@ -0,0 +1,68 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {DragDropModule} from "@angular/cdk/drag-drop";
+import {CommonModule} from "@angular/common";
+import {NgModule} from "@angular/core";
+import {ReactiveFormsModule} from "@angular/forms";
+import {MatIconModule} from "@angular/material/icon";
+import {MatSidenavModule} from "@angular/material/sidenav";
+import {CollapsibleModule} from "../../../shared/layout/collapsible";
+import {GlobalClassToggleModule} from "../../../shared/layout/global-class-toggle";
+import {SharedPipesModule} from "../../../shared/pipes";
+import {TextBlockModule} from "../../../shared/text-block";
+import {AttachmentsFormModule} from "../attachments";
+import {CombineBlockdataTextPipe} from "../../../shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe";
+import {
+    ArrangementFormGroupComponent,
+    StatementEditorFormComponent,
+    StatementPreviewComponent,
+    TextBlockControlComponent
+} from "./components";
+import {ArrangementToPreviewPipe, ErrorToMessagesPipe, GetTitlePipe} from "./pipes";
+
+
+@NgModule({
+    imports: [
+        CommonModule,
+        ReactiveFormsModule,
+        SharedPipesModule,
+        DragDropModule,
+        TextBlockModule,
+        CollapsibleModule,
+        MatIconModule,
+        GlobalClassToggleModule,
+        MatSidenavModule,
+        AttachmentsFormModule
+    ],
+    declarations: [
+        StatementEditorFormComponent,
+        TextBlockControlComponent,
+        GetTitlePipe,
+        ErrorToMessagesPipe,
+        StatementPreviewComponent,
+        ArrangementToPreviewPipe,
+        CombineBlockdataTextPipe,
+        ArrangementFormGroupComponent,
+        CombineBlockdataTextPipe
+    ],
+    exports: [
+        StatementEditorFormComponent,
+        StatementPreviewComponent,
+        ArrangementToPreviewPipe,
+        ArrangementFormGroupComponent
+    ]
+})
+export class StatementEditorModule {
+
+}
diff --git a/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.html b/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.html
index 830c525..cbf739b 100644
--- a/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.html
+++ b/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.html
@@ -50,7 +50,8 @@
     [appTitle]="'statementInformationForm.container.inboxAttachments' | translate">
 
     <app-attachments-form-group
-      [appFormGroup]="appFormGroup">
+      [appForbiddenTagIds]="appForbiddenTagIds"
+      [appFormGroup]="appFormGroup | getFormGroup: 'attachments'">
     </app-attachments-form-group>
 
   </app-collapsible>
diff --git a/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.spec.ts b/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.spec.ts
index 2b6d7b0..f9aef9c 100644
--- a/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.spec.ts
+++ b/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.spec.ts
@@ -72,8 +72,10 @@
             city: null,
             district: null,
             contactId: null,
-            addAttachments: [],
-            removeAttachments: []
+            attachments: {
+                add: [],
+                edit: []
+            }
         };
         expect(component).toBeDefined();
         fixture.detectChanges();
@@ -95,8 +97,10 @@
             city: null,
             district: null,
             contactId: null,
-            addAttachments: [],
-            removeAttachments: []
+            attachments: {
+                add: [],
+                edit: []
+            }
         };
         component.appForNewStatement = true;
         expect(component).toBeDefined();
@@ -120,8 +124,10 @@
             city: null,
             district: null,
             contactId: null,
-            addAttachments: [],
-            removeAttachments: []
+            attachments: {
+                add: [],
+                edit: []
+            }
         };
         component.appForNewStatement = true;
         expect(component).toBeDefined();
@@ -229,8 +235,10 @@
             city: "city",
             district: "district",
             contactId: "contactId",
-            addAttachments: [],
-            removeAttachments: []
+            attachments: {
+                add: [],
+                edit: []
+            }
         };
 
         component.appForNewStatement = true;
@@ -273,8 +281,10 @@
             city: "city",
             district: "district",
             contactId: "contactId",
-            addAttachments: [],
-            removeAttachments: []
+            attachments: {
+                add: [],
+                edit: []
+            }
         };
 
         mockStore.overrideSelector(taskSelector, task as IAPIProcessTask);
@@ -306,6 +316,4 @@
             responsible: false
         }));
     });
-
-
 });
diff --git a/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.ts b/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.ts
index 104317f..72bfcd1 100644
--- a/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.ts
+++ b/src/app/features/forms/statement-information/components/statement-information-form/statement-information-form.component.ts
@@ -16,7 +16,7 @@
 import {select, Store} from "@ngrx/store";
 import {concat, defer, of} from "rxjs";
 import {distinctUntilChanged, filter, map, switchMap, take, takeUntil} from "rxjs/operators";
-import {IAPISearchOptions} from "../../../../../core";
+import {EAPIStaticAttachmentTagIds, IAPISearchOptions} from "../../../../../core";
 import {
     fetchContactDetailsAction,
     fetchSettingsAction,
@@ -26,6 +26,7 @@
     getContactSearchSelector,
     getStatementLoadingSelector,
     getStatementSectorsSelector,
+    IAttachmentFormValue,
     IStatementInformationFormValue,
     openContactDataBaseAction,
     startContactSearchAction,
@@ -45,6 +46,15 @@
 export class StatementInformationFormComponent extends AbstractReactiveFormComponent<IStatementInformationFormValue> implements OnInit {
 
     @Input()
+    public appForbiddenTagIds = [
+        EAPIStaticAttachmentTagIds.CONSIDERATION,
+        EAPIStaticAttachmentTagIds.STATEMENT,
+        EAPIStaticAttachmentTagIds.OUTBOX,
+        EAPIStaticAttachmentTagIds.EMAIL,
+        EAPIStaticAttachmentTagIds.EMAIL_TEXT
+    ];
+
+    @Input()
     public appForNewStatement: boolean;
 
     public statementLoading$ = this.store.pipe(select(getStatementLoadingSelector));
@@ -75,15 +85,17 @@
         city: new FormControl(undefined, [Validators.required]),
         district: new FormControl(undefined, [Validators.required]),
         contactId: new FormControl(undefined, [Validators.required]),
-        addAttachments: new FormControl([]),
-        removeAttachments: new FormControl([])
+        attachments: createFormGroup<IAttachmentFormValue>({
+            add: new FormControl([]),
+            edit: new FormControl([])
+        })
     });
 
     public selectedContactId$ = defer(() => concat(of(null), this.appFormGroup.valueChanges)).pipe(
         map(() => this.getValue().contactId)
     );
 
-    private value$ = this.store.pipe(select(statementInformationFormValueSelector));
+    private form$ = this.store.pipe(select(statementInformationFormValueSelector));
 
     private searchSize = 10;
 
@@ -158,7 +170,7 @@
     }
 
     private updateForm() {
-        this.value$.pipe(takeUntil(this.destroy$), filter(() => !this.appForNewStatement))
+        this.form$.pipe(takeUntil(this.destroy$), filter(() => !this.appForNewStatement))
             .subscribe((value) => this.patchValue(value));
         this.statementLoading$.pipe(takeUntil(this.destroy$))
             .subscribe((loading) => loading?.submittingStatementInformation ? this.appFormGroup.disable() : this.appFormGroup.enable());
diff --git a/src/app/features/forms/statement-information/statement-information-form.module.ts b/src/app/features/forms/statement-information/statement-information-form.module.ts
index 7832e5f..01e558f 100644
--- a/src/app/features/forms/statement-information/statement-information-form.module.ts
+++ b/src/app/features/forms/statement-information/statement-information-form.module.ts
@@ -17,12 +17,13 @@
 import {MatIconModule} from "@angular/material/icon";
 import {TranslateModule} from "@ngx-translate/core";
 import {CommonControlsModule} from "../../../shared/controls/common";
-import {ContactSelectModule} from "../../../shared/controls/contact-select/contact-select.module";
+import {ContactSelectModule} from "../../../shared/controls/contact-select";
 import {DateControlModule} from "../../../shared/controls/date-control";
 import {FileDropModule} from "../../../shared/controls/file-drop";
 import {FileSelectModule} from "../../../shared/controls/file-select";
 import {SelectModule} from "../../../shared/controls/select";
 import {CollapsibleModule} from "../../../shared/layout/collapsible";
+import {SharedPipesModule} from "../../../shared/pipes";
 import {AttachmentsFormModule} from "../attachments";
 import {CommentsFormModule} from "../comments";
 import {GeneralInformationFormGroupComponent, StatementInformationFormComponent} from "./components";
@@ -43,7 +44,8 @@
         CommonControlsModule,
         ContactSelectModule,
         FileSelectModule,
-        AttachmentsFormModule
+        AttachmentsFormModule,
+        SharedPipesModule
     ],
     declarations: [
         StatementInformationFormComponent,
diff --git a/src/app/features/forms/workflow-data/components/workflow-data-form.component.spec.ts b/src/app/features/forms/workflow-data/components/workflow-data-form.component.spec.ts
index 02d4158..f6d60db 100644
--- a/src/app/features/forms/workflow-data/components/workflow-data-form.component.spec.ts
+++ b/src/app/features/forms/workflow-data/components/workflow-data-form.component.spec.ts
@@ -15,11 +15,8 @@
 import {FormGroup} from "@angular/forms";
 import {RouterTestingModule} from "@angular/router/testing";
 import {MockStore, provideMockStore} from "@ngrx/store/testing";
-import {IAPISearchOptions} from "../../../../core/api/shared";
-import {I18nModule} from "../../../../core/i18n";
-import {taskSelector} from "../../../../store/process/selectors";
-import {startStatementSearchAction, submitWorkflowDataFormAction} from "../../../../store/statements/actions";
-import {IWorkflowFormValue} from "../../../../store/statements/model";
+import {I18nModule, IAPISearchOptions} from "../../../../core";
+import {IWorkflowFormValue, startStatementSearchAction, submitWorkflowDataFormAction, taskSelector} from "../../../../store";
 import {WorkflowDataFormModule} from "../workflow-data-form.module";
 import {WorkflowDataFormComponent} from "./workflow-data-form.component";
 
diff --git a/src/app/features/new/components/new-statement-form/new-statement-form.component.html b/src/app/features/new/components/new-statement-form/new-statement-form.component.html
deleted file mode 100644
index 29c2c2c..0000000
--- a/src/app/features/new/components/new-statement-form/new-statement-form.component.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<ng-template #loadingHeader>
-  <app-progress-spinner class="new-statement-form-spinner">
-  </app-progress-spinner>
-</ng-template>
-
-<app-card
-  [appCardHeader]="appIsLoading ? loadingHeader : null"
-  [appTitle]="'new.title' | translate"
-  cdkTrapFocus class="new-statement">
-
-  <form #newStatementForm="ngForm"
-        (input)="onFormInput(newStatementForm)"
-        (ngSubmit)="submit(newStatementForm);"
-        class="new-statement-form">
-
-    <ng-container *ngFor="let group of formGroups; let index = index;">
-      <div [ngSwitch]="group?.type" class="new-statement-form-group">
-
-        <ng-container *ngSwitchCase="'text'">
-          <label [for]="appId + '-' + index"
-                 class="new-statement-form-group-label">
-            {{group.title | translate}}
-          </label>
-
-          <input
-            #ngModel="ngModel"
-            [class.openk-danger]="ngModel.invalid && (ngModel.touched || isTouched)"
-            [class.openk-success]="ngModel.valid"
-            [disabled]="appDisabled"
-            [id]="appId + '-' + index"
-            [name]="group.id"
-            [ngModel]="appValue ? appValue[group.id] : ''"
-            autocomplete="off"
-            class="new-statement-form-group-input openk-input openk-info"
-            required>
-        </ng-container>
-
-
-        <ng-container *ngSwitchCase="'date'">
-          <label [for]="appId + '-' + index"
-                 class="new-statement-form-group-label">
-            {{group.title | translate}}
-          </label>
-
-          <app-date-control
-            #ngModel="ngModel"
-            [appDanger]="ngModel.invalid && (ngModel.touched || isTouched)"
-            [appDisabled]="appDisabled"
-            [appId]="appId + '-' + index"
-            [appInfo]="true"
-            [appSuccess]="ngModel.valid"
-            [name]="group.id"
-            [ngModel]="appValue ? appValue[group.id] : ''"
-            class="new-statement-form-group-input"
-            required>
-          </app-date-control>
-        </ng-container>
-
-        <ng-container *ngSwitchCase="'select'">
-          <label [for]="appId + '-' + index"
-                 class="new-statement-form-group-label">
-            {{group.title | translate}}
-          </label>
-
-          <app-select
-            #ngModel="ngModel"
-            [appDisabled]="appDisabled"
-            [appId]="appId + '-' + index"
-            [appOptions]="appTypeOptions"
-            [appPlaceholder]="appTypeOptions?.length > 0 ? 'Vorgangsart auswählen...' : 'Keine Vorgangsart verfügbar...'"
-            [class.openk-danger]="ngModel.invalid"
-            [class.openk-success]="ngModel.valid"
-            [name]="group.id"
-            [ngModel]="(appTypeOptions | selected: appValue?.typeId : true)?.value"
-            class="new-statement-form-group-input openk-info"
-            required>
-          </app-select>
-        </ng-container>
-
-      </div>
-    </ng-container>
-
-    <div class="new-statement-form-group">
-      <label class="new-statement-form-group-label new-statement-form-group-label-attachments">
-        {{'new.form.attachments' | translate}}
-      </label>
-
-      <app-file-drop
-        #fileDrop
-        [appDisabled]="appDisabled"
-        name="attachments"
-        ngModel
-      >
-      </app-file-drop>
-    </div>
-
-    <div class="new-statement-form-submit">
-      <label *ngIf="appError != null"
-             class="new-statement-form-error openk-danger">
-        {{appError | translate}}
-      </label>
-
-      <span class="new-statement-form-submit-actions">
-
-        <button (click)="fileDrop.openDialog()" [disabled]="appDisabled" class="openk-button"
-                type="button">
-          <mat-icon>attach_file</mat-icon>
-          Anlagen hinzufügen
-        </button>
-
-        <button [disabled]="appDisabled"
-                class="openk-button openk-success">
-          <mat-icon>note_add</mat-icon>
-          Stellungnahme anlegen
-        </button>
-
-      </span>
-    </div>
-
-  </form>
-
-</app-card>
diff --git a/src/app/features/new/components/new-statement-form/new-statement-form.component.scss b/src/app/features/new/components/new-statement-form/new-statement-form.component.scss
deleted file mode 100644
index eb31bf2..0000000
--- a/src/app/features/new/components/new-statement-form/new-statement-form.component.scss
+++ /dev/null
@@ -1,98 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "openk.styles";
-
-:host {
-  display: block;
-}
-
-.loading {
-  font-size: x-small;
-  margin-left: auto;
-}
-
-.new-statement {
-  margin-top: 1em;
-  max-width: 35em;
-  width: 100%;
-}
-
-.new-statement-form {
-  display: flex;
-  flex-flow: column;
-  width: 100%;
-  position: relative;
-}
-
-.new-statement-form-spinner {
-  margin: 0 0.75em 0 auto;
-}
-
-.new-statement-form-group {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  margin-bottom: 1em;
-  flex-flow: row wrap;
-}
-
-.new-statement-form-group-label {
-  padding: 0.1em 1em 0.1em 0;
-  display: inline-block;
-  min-width: 9em;
-}
-
-.new-statement-form-group-input {
-  width: 20em;
-  box-sizing: border-box;
-}
-
-.new-statement-form-group-label-attachments {
-  margin-bottom: auto;
-  margin-top: 0.25em;
-}
-
-.new-statement-form-submit {
-  margin-top: 0.5em;
-  display: flex;
-  justify-content: flex-end;
-  align-items: center;
-  flex-flow: row wrap;
-}
-
-.new-statement-form-error {
-  display: inline-flex;
-  width: auto;
-  color: get-color($openk-danger-palette);
-  font-size: smaller;
-  padding: 1em;
-  margin: auto;
-  max-width: 15em;
-}
-
-.new-statement-form-submit-actions {
-  flex-shrink: 0;
-  display: inline-flex;
-  flex-flow: column;
-
-  & > * {
-    margin: 0.5em 0;
-    min-width: 15em;
-    justify-content: flex-start;
-  }
-
-  & > *:last-child {
-    margin-bottom: 0;
-  }
-}
diff --git a/src/app/features/new/components/new-statement-form/new-statement-form.component.spec.ts b/src/app/features/new/components/new-statement-form/new-statement-form.component.spec.ts
deleted file mode 100644
index 59a09ea..0000000
--- a/src/app/features/new/components/new-statement-form/new-statement-form.component.spec.ts
+++ /dev/null
@@ -1,166 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {ComponentFixture, TestBed} from "@angular/core/testing";
-import {FormsModule, NgForm} from "@angular/forms";
-import {MatIconModule} from "@angular/material/icon";
-import {By} from "@angular/platform-browser";
-import {I18nModule} from "../../../../core/i18n";
-import {DateControlModule} from "../../../../shared/controls/date-control";
-import {FileDropModule} from "../../../../shared/controls/file-drop";
-import {SelectModule} from "../../../../shared/controls/select";
-import {CardModule} from "../../../../shared/layout/card";
-import {ENewStatementError} from "../../../../store";
-import {NewStatementFormComponent} from "./new-statement-form.component";
-
-describe("NewStatementFormComponent", () => {
-    let component: NewStatementFormComponent;
-    let fixture: ComponentFixture<NewStatementFormComponent>;
-
-    beforeEach(async () => {
-        await TestBed.configureTestingModule({
-            imports: [
-                CardModule,
-                CommonModule,
-                FormsModule,
-                DateControlModule,
-                FileDropModule,
-                I18nModule,
-                MatIconModule,
-                SelectModule
-            ],
-            declarations: [
-                NewStatementFormComponent
-            ]
-        }).compileComponents();
-    });
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(NewStatementFormComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-
-    it("should render all form input elements", () => {
-        const debugElement = fixture.debugElement;
-        for (let i = 0; i < component.formGroups.length; i++) {
-            const selector = `[id='${component.appId}-${i}']`;
-            const input = debugElement.query(By.css(selector));
-            expect(input).toBeTruthy();
-        }
-    });
-
-    describe("function tests", () => {
-        const validForm = {
-            valid: true,
-            value: {
-                isValidForm: true
-            }
-        } as NgForm;
-        const invalidForm = {
-            valid: false,
-            value: {
-                isValidForm: false
-            }
-        } as NgForm;
-
-        describe("onFormInput", () => {
-
-            it("should keep the invalid form error", () => {
-                component.appError = ENewStatementError.INVALID_FORM;
-                component.onFormInput(undefined);
-                expect(component.appError).toBe(ENewStatementError.INVALID_FORM);
-            });
-
-            it("should reset the invalid form error when supplied with a valid form input", () => {
-                component.appError = ENewStatementError.INVALID_FORM;
-                component.onFormInput(validForm);
-                expect(component.appError).toBeUndefined();
-            });
-
-            it("should keep the invalid form error when supplied with an invalid form input", () => {
-                component.appError = ENewStatementError.INVALID_FORM;
-                component.onFormInput(invalidForm);
-                expect(component.appError).toBe(ENewStatementError.INVALID_FORM);
-            });
-
-            it("should keep the unknown error (no override)", () => {
-                component.appError = ENewStatementError.UNKNOWN_ERROR;
-                component.onFormInput(validForm);
-                expect(component.appError).toBe(ENewStatementError.UNKNOWN_ERROR);
-            });
-
-            it("should remove the error when input is changed to a valid one", async () => {
-                const debugElement = fixture.debugElement;
-                component.appError = ENewStatementError.INVALID_FORM;
-                spyOn(component, "onFormInput").and.callThrough();
-                await fixture.whenStable();
-                const form = debugElement.query(By.directive(NgForm));
-                const ngForm = form.injector.get(NgForm);
-
-                ngForm.setValue({
-                    attachments: [],
-                    city: "City",
-                    district: "District",
-                    dueDate: "2020-11-11",
-                    receiptDate: "2020-11-11",
-                    title: "Statement",
-                    typeId: "2",
-                });
-
-                fixture.detectChanges();
-                await fixture.whenStable();
-                form.nativeElement.dispatchEvent(new Event("input"));
-                expect(component.appError).toEqual(undefined);
-            });
-        });
-
-        describe("submit", () => {
-
-            it("should set isTouched to true on submit", async () => {
-                expect(component.isTouched).toBeFalse();
-                component.submit(validForm);
-                expect(component.isTouched).toBeTrue();
-            });
-
-            it("should set error on undefined form", async () => {
-                component.appError = undefined;
-                component.submit(undefined);
-                expect(component.appError).toEqual(ENewStatementError.INVALID_FORM);
-            });
-
-            it("should set error on invalid form", async () => {
-                component.appError = undefined;
-                component.submit(invalidForm);
-                expect(component.appError).toEqual(ENewStatementError.INVALID_FORM);
-            });
-
-            it("should emit the form values for a valid form", async () => {
-                spyOn(component.appSubmit, "emit");
-                component.submit(validForm);
-                expect(component.appSubmit.emit).toHaveBeenCalledWith(validForm.value);
-            });
-
-            it("should not emit form values for an invalid form", async () => {
-                spyOn(component.appSubmit, "emit");
-                component.submit(invalidForm);
-                expect(component.appSubmit.emit).not.toHaveBeenCalled();
-            });
-        });
-    });
-});
diff --git a/src/app/features/new/components/new-statement-form/new-statement-form.component.stories.ts b/src/app/features/new/components/new-statement-form/new-statement-form.component.stories.ts
deleted file mode 100644
index f1f036e..0000000
--- a/src/app/features/new/components/new-statement-form/new-statement-form.component.stories.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
-import {action} from "@storybook/addon-actions";
-import {boolean, object, text, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {I18nModule} from "../../../../core/i18n";
-import {NewStatementModule} from "../../new-statement.module";
-
-storiesOf("Features", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({
-        imports: [
-            I18nModule,
-            BrowserAnimationsModule,
-            NewStatementModule
-        ]
-    }))
-    .add("NewStatementForm", () => ({
-        template: `
-            <app-new-statement-form style="margin-left: 1em;"
-                (appSubmit)="submit($event)"
-                [appDisabled]="isDisabled"
-                [appError]="error"
-                [appIsLoading]="isLoading"
-                [appTypeOptions]="typeOptions"
-                [appValue]="value">
-            </app-new-statement-form>
-        `,
-        props: {
-            submit: action("submit"),
-            isLoading: boolean("isLoading", false),
-            isDisabled: boolean("isDisabled", false),
-            error: text("Error", undefined),
-            typeOptions: Array(5).fill(0).map((_, value) => ({value, label: "Statement Type " + value})),
-            value: object("Value", {})
-        }
-    }));
diff --git a/src/app/features/new/components/new-statement-form/new-statement-form.component.ts b/src/app/features/new/components/new-statement-form/new-statement-form.component.ts
deleted file mode 100644
index 611c48c..0000000
--- a/src/app/features/new/components/new-statement-form/new-statement-form.component.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, EventEmitter, Input, Output} from "@angular/core";
-import {NgForm} from "@angular/forms";
-import {ISelectOption} from "../../../../shared/controls/select";
-import {ENewStatementError, IStatementInfoFormValue} from "../../../../store";
-
-interface INewStatementFormGroup {
-    title: string;
-    type: "text" | "date" | "select";
-    id: keyof IStatementInfoFormValue;
-}
-
-@Component({
-    selector: "app-new-statement-form",
-    templateUrl: "./new-statement-form.component.html",
-    styleUrls: ["./new-statement-form.component.scss"]
-})
-export class NewStatementFormComponent {
-
-    private static id = 0;
-
-    @Input()
-    public appError: string;
-
-    @Input()
-    public appIsLoading = false;
-
-    @Input()
-    public appDisabled = false;
-
-    @Input()
-    public appId = `NewStatementFormComponent-${NewStatementFormComponent.id++}`;
-
-    @Input()
-    public appValue: Partial<IStatementInfoFormValue>;
-
-    @Input()
-    public appTypeOptions: ISelectOption[] = [];
-
-    @Output()
-    public appSubmit = new EventEmitter<IStatementInfoFormValue>();
-
-    public isTouched = false;
-
-    public formGroups: INewStatementFormGroup[] = [
-        {
-            title: "new.form.title",
-            id: "title",
-            type: "text"
-        },
-        {
-            title: "new.form.receiptDate",
-            id: "receiptDate",
-            type: "date"
-        },
-        {
-            title: "new.form.dueDate",
-            id: "dueDate",
-            type: "date"
-        },
-        {
-            title: "new.form.typeId",
-            id: "typeId",
-            type: "select"
-        },
-        {
-            title: "new.form.city",
-            id: "city",
-            type: "text"
-        },
-        {
-            title: "new.form.district",
-            id: "district",
-            type: "text"
-        }
-    ];
-
-    public onFormInput(form: NgForm) {
-        if (this.appError === ENewStatementError.INVALID_FORM && form?.valid) {
-            this.appError = undefined;
-        }
-    }
-
-    public submit(form: NgForm) {
-        this.isTouched = true;
-        if (!form?.valid) {
-            this.appError = ENewStatementError.INVALID_FORM;
-            return;
-        }
-        this.appSubmit.emit(form.value);
-    }
-
-}
diff --git a/src/app/features/new/new-statement-route-guard.service.ts b/src/app/features/new/new-statement-route-guard.service.ts
deleted file mode 100644
index beaaa60..0000000
--- a/src/app/features/new/new-statement-route-guard.service.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Injectable} from "@angular/core";
-import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from "@angular/router";
-import {select, Store} from "@ngrx/store";
-import {Observable} from "rxjs";
-import {filter, map, switchMap} from "rxjs/operators";
-import {isLoadingSelector, isOfficialInChargeSelector} from "../../store";
-
-@Injectable({providedIn: "root"})
-export class NewStatementRouteGuardService implements CanActivate {
-
-    public readonly isInitialized$ = this.store.pipe(
-        select(isLoadingSelector),
-        filter((isLoading) => !isLoading)
-    );
-
-    public readonly isAllowed$ = this.store.pipe(
-        select(isOfficialInChargeSelector)
-    );
-
-    private readonly redirectUrlTree = this.router.createUrlTree(["/"]);
-
-    public constructor(private readonly store: Store, private readonly router: Router) {
-    }
-
-    public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {
-        return this.isInitialized$.pipe(
-            switchMap(() => this.isAllowed$),
-            map((isAllowed) => isAllowed ? isAllowed : this.redirectUrlTree)
-        );
-    }
-
-}
diff --git a/src/app/pages/app-navigation-frame/app-navigation-frame.module.ts b/src/app/pages/app-navigation-frame/app-navigation-frame.module.ts
deleted file mode 100644
index 893f139..0000000
--- a/src/app/pages/app-navigation-frame/app-navigation-frame.module.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {MatIconModule} from "@angular/material/icon";
-import {RouterModule} from "@angular/router";
-import {TranslateModule} from "@ngx-translate/core";
-import {DropDownModule} from "../../shared/drop-down/drop-down.module";
-import {AppNavigationFrameComponent} from "./components/app-navigation-frame/app-navigation-frame.component";
-import {ExitPageComponent} from "./components/exit-page/exit-page.component";
-import {DropDownMenuComponent} from "./components/nav-drop-down-menu/drop-down-menu.component";
-import {PageHeaderComponent} from "./components/nav-header/page-header.component";
-import {PageFrameComponent} from "./components/page-frame/page-frame.component";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        RouterModule,
-        MatIconModule,
-        TranslateModule,
-
-        DropDownModule
-    ],
-    declarations: [
-        ExitPageComponent,
-        DropDownMenuComponent,
-        PageHeaderComponent,
-        PageFrameComponent,
-        AppNavigationFrameComponent
-    ],
-    exports: [
-        ExitPageComponent,
-        DropDownMenuComponent,
-        PageHeaderComponent,
-        PageFrameComponent,
-        AppNavigationFrameComponent
-    ]
-})
-export class AppNavigationFrameModule {
-}
diff --git a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.html b/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.html
deleted file mode 100644
index 54ccd39..0000000
--- a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<app-page-frame
-  (appCloseWindow)="closeWindow()"
-  (appLogout)="logOut()"
-  [appExitCode]="exitCode$ | async"
-  [appIsLoading]="isLoading$ | async"
-  [appMenuHidden]="(isLoggedIn$ | async) !== true"
-  [appPortalRoute]="appPortalRoute"
-  [appUserName]="userName$ | async"
-  [appVersion]="version$ | async">
-
-  <ng-content></ng-content>
-
-</app-page-frame>
diff --git a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.spec.ts b/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.spec.ts
deleted file mode 100644
index be535ad..0000000
--- a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.spec.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {RouterTestingModule} from "@angular/router/testing";
-import {StoreModule} from "@ngrx/store";
-import {provideMockStore} from "@ngrx/store/testing";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-import {AppNavigationFrameComponent} from "./app-navigation-frame.component";
-
-describe("AppNavigationFrameComponent", () => {
-    let component: AppNavigationFrameComponent;
-    let fixture: ComponentFixture<AppNavigationFrameComponent>;
-    const initialState = {};
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [
-                AppNavigationFrameModule,
-                I18nModule,
-                RouterTestingModule,
-                StoreModule
-            ],
-            providers: [provideMockStore({initialState})]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(AppNavigationFrameComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.ts b/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.ts
deleted file mode 100644
index e33d897..0000000
--- a/src/app/pages/app-navigation-frame/components/app-navigation-frame/app-navigation-frame.component.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, Inject} from "@angular/core";
-import {select, Store} from "@ngrx/store";
-import {WINDOW} from "../../../../core/dom/window.token";
-import {PORTAL_ROUTE} from "../../../../core/external-routes/portal-route.token";
-import {logOutAction} from "../../../../store/root/root.actions";
-import {exitCodeSelector, isLoadingSelector} from "../../../../store/root/selectors/root.selectors";
-import {isLoggedInSelector, userNameSelector} from "../../../../store/root/selectors/user.selectors";
-import {overallVersionSelector} from "../../../../store/root/selectors/version.selectors";
-
-@Component({
-    selector: "app-navigation-frame",
-    templateUrl: "./app-navigation-frame.component.html",
-    styleUrls: ["./app-navigation-frame.component.scss"]
-})
-export class AppNavigationFrameComponent {
-
-    public exitCode$ = this.store.pipe(select(exitCodeSelector));
-
-    public isLoading$ = this.store.pipe(select(isLoadingSelector));
-
-    public isLoggedIn$ = this.store.pipe(select(isLoggedInSelector));
-
-    public userName$ = this.store.pipe(select(userNameSelector));
-
-    public version$ = this.store.pipe(select(overallVersionSelector));
-
-    public constructor(
-        public readonly store: Store,
-        @Inject(WINDOW) public readonly window: Window,
-        @Inject(PORTAL_ROUTE) public readonly appPortalRoute: string
-    ) {
-
-    }
-
-    public logOut() {
-        this.store.dispatch(logOutAction());
-    }
-
-    public closeWindow() {
-        try {
-            if (this.window.opener != null) {
-                this.window.close();
-            }
-        } catch (e) {
-            return;
-        }
-    }
-
-}
diff --git a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.html b/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.html
deleted file mode 100644
index 8498725..0000000
--- a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<h2 class="error-page-title">
-  {{ "core.exit." + appExitCode + ".title" | translate }}
-</h2>
-
-<h4 class="error-page-message">
-  {{ "core.exit." + appExitCode + ".message" | translate }}
-</h4>
-
-<a (click)="appRouting.emit()" [href]="appHref" class="openk-button openk-info error-page-anchor">
-  <mat-icon>
-    first_page
-  </mat-icon>
-  {{ "core.exit." + appExitCode + ".anchor" | translate }}
-</a>
diff --git a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.scss b/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.scss
deleted file mode 100644
index 55464bf..0000000
--- a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-:host {
-  display: flex;
-  flex-flow: column;
-  justify-content: center;
-  align-items: center;
-  width: 100%;
-  height: 100%;
-}
-
-.error-page-title {
-  margin: 0;
-  font-size: 1.75em;
-  padding: 0 1em;
-  text-align: center;
-  font-family: inherit;
-  font-weight: bold;
-  // line-height: 1.25;
-  color: inherit;
-}
-
-.error-page-message {
-  font-size: 1.1em;
-  max-width: 32em;
-  margin: 0.5em 1em 1.5em 1em;
-  text-align: center;
-  font-family: inherit;
-  font-weight: 500;
-  // line-height: 1.25;
-  color: inherit;
-}
-
-.error-page-anchor {
-  margin: 0 0 2em 0;
-}
-
diff --git a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.spec.ts b/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.spec.ts
deleted file mode 100644
index 3a365eb..0000000
--- a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.spec.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-import {ExitPageComponent} from "./exit-page.component";
-
-describe("ExitPageComponent", () => {
-    let component: ExitPageComponent;
-    let fixture: ComponentFixture<ExitPageComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [I18nModule, AppNavigationFrameModule],
-            declarations: [ExitPageComponent]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(ExitPageComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.stories.ts b/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.stories.ts
deleted file mode 100644
index 7ff8f5f..0000000
--- a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.stories.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {MatIconModule} from "@angular/material/icon";
-import {action} from "@storybook/addon-actions";
-import {select, text, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {EExitCode} from "../../../../store/root/model/EExitCode";
-import {ExitPageComponent} from "./exit-page.component";
-
-storiesOf("01 Pages / 01 AppNavigationFrame", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({
-        declarations: [
-            ExitPageComponent
-        ],
-        imports: [
-            I18nModule,
-            MatIconModule
-        ]
-    }))
-    .add("Exit Page", () => ({
-        component: ExitPageComponent,
-        props: {
-            appExitCode: select("Exit Code", EExitCode, EExitCode.LOGOUT),
-            appHref: text("Link", "/"),
-            appRouting: action("appRouting")
-        }
-    }));
diff --git a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.ts b/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.ts
deleted file mode 100644
index 1221ecb..0000000
--- a/src/app/pages/app-navigation-frame/components/exit-page/exit-page.component.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, EventEmitter, Input, Output} from "@angular/core";
-import {EExitCode} from "../../../../store/root/model/EExitCode";
-
-@Component({
-    selector: "app-exit-page",
-    templateUrl: "./exit-page.component.html",
-    styleUrls: ["./exit-page.component.scss"]
-})
-export class ExitPageComponent {
-
-    @Input()
-    public appExitCode: EExitCode;
-
-    @Input()
-    public appHref: string;
-
-    @Output()
-    public readonly appRouting = new EventEmitter();
-
-}
diff --git a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.html b/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.html
deleted file mode 100644
index 9cea2db..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<button #appDropDown="appDropDown"
-        (click)="appDropDown.toggle()"
-        [appDropDown]="dropDownTemplate"
-        [class.drop-down-button-opened]="appDropDown.isOpen"
-        class="drop-down-button drop-down-toggle cursor-pointer user-select-none">
-
-  <span class="drop-down-button-label">
-    <ng-content></ng-content>
-  </span>
-
-  <mat-icon
-    [class.drop-down-button-icon-opened]="appDropDown.isOpen"
-    class="drop-down-button-icon">
-    play_arrow
-  </mat-icon>
-
-</button>
-
-<ng-template #dropDownTemplate>
-
-  <div *ngIf="appDropDown.isOpen" class="drop-down-menu">
-
-    <button (click)="logOut()"
-            class="drop-down-button cursor-pointer user-select-none drop-down-menu-item">
-      <span> {{ 'core.logout' | translate}}</span>
-    </button>
-
-  </div>
-</ng-template>
diff --git a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.scss b/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.scss
deleted file mode 100644
index 66e40ca..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.scss
+++ /dev/null
@@ -1,120 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "../../../../../styles/openk.styles";
-
-$drop-down-menu-toggle-contrast: get-color($openk-info-palette, 500);
-$drop-down-menu-toggle-background: get-color($openk-info-palette, 100);
-$drop-down-menu-toggle-border: rgba(0, 0, 0, 0.05);
-$drop-down-menu-contrast: get-color($openk-default-palette, 500, contrast);
-$drop-down-menu-background: get-color($openk-info-palette, A100);
-
-:host {
-  display: inline-flex;
-  justify-content: center;
-  align-items: center;
-  border-radius: 6px;
-  min-width: 9em;
-  height: 2em;
-}
-
-
-.drop-down-button {
-  width: 100%;
-  height: 100%;
-  outline: none;
-  display: inline-flex;
-  justify-content: center;
-  align-items: center;
-  padding: 0.25em 0.5em;
-  margin: 0;
-  font-size: 1em;
-  text-align: center;
-  border-radius: inherit;
-  transition: filter 100ms ease-in;
-
-  &:hover {
-    filter: brightness(0.98);
-  }
-
-  &:focus {
-    filter: brightness(0.96);
-  }
-
-  &:active {
-    filter: brightness(0.94);
-  }
-}
-
-.drop-down-button-label {
-  margin: 0 auto;
-  padding: 1px 3px 0 3px;
-  line-height: 1.5;
-  font-weight: 400;
-  white-space: nowrap;
-  font-size: 0.875em;
-}
-
-.drop-down-button-icon {
-  text-align: center;
-  vertical-align: middle;
-  height: initial;
-  width: initial;
-  font-size: 1em;
-  transition: transform 100ms linear;
-  transform: rotate(90deg);
-}
-
-.drop-down-button-opened {
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0;
-  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-
-  .drop-down-button-icon {
-    transform: rotate(270deg);
-  }
-}
-
-
-.drop-down-toggle {
-  color: $drop-down-menu-toggle-contrast;
-  background-color: $drop-down-menu-toggle-background;
-  border: 1px solid $drop-down-menu-toggle-border;
-}
-
-
-.drop-down-menu {
-  display: flex;
-  flex-flow: column;
-  width: 100%;
-  background-color: $drop-down-menu-background;
-  color: $drop-down-menu-contrast;
-  border: 1px solid $drop-down-menu-toggle-border;
-  border-top: 0;
-  border-radius: 4px;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  overflow: hidden;
-  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-}
-
-.drop-down-menu-item {
-  border: 0;
-  background: inherit;
-  border-bottom: 1px solid $drop-down-menu-toggle-border;
-  border-radius: 0;
-
-  &:last-child {
-    border-bottom: 0;
-  }
-}
diff --git a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.spec.ts b/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.spec.ts
deleted file mode 100644
index 1557c88..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.spec.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-import {DropDownMenuComponent} from "./drop-down-menu.component";
-
-describe("DropDownMenuComponent", () => {
-    let component: DropDownMenuComponent;
-    let fixture: ComponentFixture<DropDownMenuComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [AppNavigationFrameModule, I18nModule]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(DropDownMenuComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-
-    it("should emit log-out", async () => {
-        let count = 0;
-        const subscription = component.appLogOut.subscribe(() => count++);
-        component.logOut();
-        fixture.detectChanges();
-        subscription.unsubscribe();
-        expect(count).toEqual(1);
-    });
-});
diff --git a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.stories.ts b/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.stories.ts
deleted file mode 100644
index 7fc02be..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.stories.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {action} from "@storybook/addon-actions";
-import {text, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-
-const template = `
-    <div style="width: 100%; display: flex; justify-content: center; padding: 1em;">
-        <app-drop-down-menu (appLogOut)="appLogOut($event)">
-            {{ngContent}}
-        </app-drop-down-menu>
-    </div>
-`;
-
-storiesOf("01 Pages / 01 AppNavigationFrame", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({
-        imports: [
-            I18nModule,
-            AppNavigationFrameModule
-        ]
-    }))
-    .add("Drop Down Menu", () => ({
-        template,
-        props: {
-            ngContent: text("ngContent", "Hugo Haferkamp"),
-            appLogOut: action("appLogOut")
-        }
-    }));
diff --git a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.ts b/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.ts
deleted file mode 100644
index bc5fea3..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-drop-down-menu/drop-down-menu.component.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-
-import {Component, EventEmitter, Output} from "@angular/core";
-
-@Component({
-    selector: "app-drop-down-menu",
-    templateUrl: "./drop-down-menu.component.html",
-    styleUrls: ["./drop-down-menu.component.scss"]
-})
-export class DropDownMenuComponent {
-
-    @Output()
-    public appLogOut = new EventEmitter<void>();
-
-    public logOut() {
-        this.appLogOut.emit();
-    }
-
-}
diff --git a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.html b/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.html
deleted file mode 100644
index a051fb8..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<div class="page-header">
-
-  <div class="page-header-menu">
-    <a [routerLinkActiveOptions]="{exact: true}"
-       [routerLinkActive]="'page-header-title-active'"
-       [routerLink]="'/'"
-       class="page-header-title cursor-pointer user-select-none">
-      <img alt="" class="page-header-title-logo" src="./assets/logo.png">
-
-      <span class="page-header-title-open">
-        open
-      </span>
-
-      <span class="page-header-title-konsequenz">
-        KONSEQUENZ
-      </span>
-    </a>
-
-    <div *ngIf="!appMenuHidden" class="page-header-menu">
-      <app-drop-down-menu (appLogOut)="logOut()">
-        {{appUserName}}
-      </app-drop-down-menu>
-    </div>
-
-  </div>
-
-  <div class="page-header-border"></div>
-</div>
-
diff --git a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.scss b/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.scss
deleted file mode 100644
index 9ffd58a..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "src/styles/openk.styles";
-
-:host {
-  display: block;
-  width: 100%;
-}
-
-.page-header-menu {
-  display: flex;
-  align-items: center;
-  width: 100%;
-  height: 50px;
-  background: $openk-header-gradient;
-}
-
-.page-header-title {
-  text-decoration: none !important;
-  outline: none;
-  margin-left: 5px;
-  margin-right: auto;
-  height: 100%;
-  display: flex;
-  align-items: center;
-  font-size: 18px;
-  line-height: 20px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-
-.page-header-title-active {
-  cursor: default;
-  pointer-events: none;
-}
-
-.page-header-title-logo {
-  height: 100%;
-}
-
-.page-header-title-open {
-  color: #000000;
-  font-size: 1.8em;
-  font-weight: 500;
-  text-transform: lowercase;
-  padding-bottom: 4px;
-  padding-left: 2.5px;
-}
-
-.page-header-title-konsequenz {
-  margin-left: 3px;
-  font-size: 1.35em;
-  color: #000000;
-  text-transform: uppercase;
-  font-weight: 300;
-  padding-top: 1px;
-  padding-right: 15px;
-}
-
-.page-header-menu {
-  display: flex;
-  justify-content: flex-end;
-  align-items: center;
-  margin: 0 1em 0 auto;
-}
-
-
-.page-header-border {
-  height: 4px;
-  width: 100%;
-  background: $openk-header-gadient-border;
-}
diff --git a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.spec.ts b/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.spec.ts
deleted file mode 100644
index dc7f3a2..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.spec.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {RouterTestingModule} from "@angular/router/testing";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-import {PageHeaderComponent} from "./page-header.component";
-
-describe("PageHeaderComponent", () => {
-    let component: PageHeaderComponent;
-    let fixture: ComponentFixture<PageHeaderComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [RouterTestingModule, AppNavigationFrameModule]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(PageHeaderComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
-
diff --git a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.ts b/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.ts
deleted file mode 100644
index 732b921..0000000
--- a/src/app/pages/app-navigation-frame/components/nav-header/page-header.component.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-
-import {Component, EventEmitter, Input, Output} from "@angular/core";
-
-@Component({
-    selector: "app-page-header",
-    templateUrl: "./page-header.component.html",
-    styleUrls: ["./page-header.component.scss"]
-})
-export class PageHeaderComponent {
-
-    @Input()
-    public appMenuHidden = false;
-
-    @Input()
-    public appUserName: string;
-
-    @Output()
-    public readonly appLogout = new EventEmitter<void>();
-
-    public logOut() {
-        this.appLogout.emit();
-    }
-
-}
diff --git a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.html b/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.html
deleted file mode 100644
index 39ce31f..0000000
--- a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<app-page-header
-  (appLogout)="appLogout.emit()"
-  [appMenuHidden]="appMenuHidden"
-  [appUserName]="appUserName">
-</app-page-header>
-
-<div class="page-frame-content">
-
-  <div class="page-frame-content-main">
-
-    <ng-container *ngIf="!appIsLoading">
-
-      <app-exit-page
-        (appRouting)="appCloseWindow.emit()"
-        *ngIf="appExitCode != null; else ngContentTemplate"
-        [appExitCode]="appExitCode"
-        [appHref]="appPortalRoute">
-
-      </app-exit-page>
-
-      <ng-template #ngContentTemplate>
-        <ng-content></ng-content>
-      </ng-template>
-
-    </ng-container>
-
-  </div>
-
-  <div class="page-frame-content-footer">
-    {{ 'core.version' | translate: {version: appVersion} }}
-  </div>
-
-</div>
diff --git a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.scss b/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.scss
deleted file mode 100644
index 73b50bc..0000000
--- a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.scss
+++ /dev/null
@@ -1,45 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-:host {
-  display: flex;
-  flex-flow: column;
-  height: 100%;
-  width: 100%;
-}
-
-.page-frame-content {
-  flex: 1 1 100%;
-  height: 100%;
-  width: 100%;
-  display: flex;
-  flex-flow: column;
-  overflow: auto;
-}
-
-.page-frame-content-main {
-  width: 100%;
-  flex: 1 1 100%;
-  display: flex;
-  flex-flow: column;
-}
-
-.page-frame-content-footer {
-  margin-left: auto;
-  box-sizing: border-box;
-  font-size: x-small;
-  display: flex;
-  justify-content: flex-end;
-  align-items: center;
-  padding: 0.5em;
-}
diff --git a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.spec.ts b/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.spec.ts
deleted file mode 100644
index 5de0b4a..0000000
--- a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.spec.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {RouterTestingModule} from "@angular/router/testing";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-import {PageFrameComponent} from "./page-frame.component";
-
-describe("PageFrameComponent", () => {
-    let component: PageFrameComponent;
-    let fixture: ComponentFixture<PageFrameComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [RouterTestingModule, AppNavigationFrameModule, I18nModule],
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(PageFrameComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.ts b/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.ts
deleted file mode 100644
index a39b0bc..0000000
--- a/src/app/pages/app-navigation-frame/components/page-frame/page-frame.component.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, EventEmitter, Input, Output} from "@angular/core";
-import {EExitCode} from "../../../../store/root/model/EExitCode";
-
-@Component({
-    selector: "app-page-frame",
-    templateUrl: "./page-frame.component.html",
-    styleUrls: ["./page-frame.component.scss"]
-})
-export class PageFrameComponent {
-
-    @Input()
-    public appExitCode: EExitCode;
-
-    @Input()
-    public appIsLoading = false;
-
-    @Input()
-    public appMenuHidden = false;
-
-    @Input()
-    public appPortalRoute: string;
-
-    @Input()
-    public appUserName: string;
-
-    @Input()
-    public appVersion: string;
-
-    @Output()
-    public readonly appCloseWindow = new EventEmitter<void>();
-
-    @Output()
-    public readonly appLogout = new EventEmitter<void>();
-
-}
diff --git a/src/app/pages/app-navigation-frame/components/page-frame/page-header.component.stories.ts b/src/app/pages/app-navigation-frame/components/page-frame/page-header.component.stories.ts
deleted file mode 100644
index b37df00..0000000
--- a/src/app/pages/app-navigation-frame/components/page-frame/page-header.component.stories.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {RouterTestingModule} from "@angular/router/testing";
-import {action} from "@storybook/addon-actions";
-import {boolean, select, text, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {I18nModule} from "../../../../core/i18n/i18n.module";
-import {EExitCode} from "../../../../store/root/model/EExitCode";
-import {AppNavigationFrameModule} from "../../app-navigation-frame.module";
-
-const template = `
-    <app-page-frame
-        (appCloseWindow)="closeWindow()"
-        (appLogout)="logOut()"
-        [appExitCode]="showExitPage ? appExitCode : undefined"
-        [appIsLoading]="appIsLoading"
-        [appMenuHidden]="appMenuHidden"
-        [appPortalRoute]="appPortalRoute"
-        [appUserName]="appUserName"
-        [appVersion]="appVersion">
-        <div style="box-sizing: border-box; width: 100%;"
-            [style.height]="withOverflow ? '120vh' : '100%'">
-        </div>
-    </app-page-frame>
-`;
-
-storiesOf("01 Pages / 01 AppNavigationFrame", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({
-        imports: [
-            RouterTestingModule,
-            I18nModule,
-            AppNavigationFrameModule
-        ]
-    }))
-    .add("Page Frame", () => ({
-        template,
-        props: {
-            // Inputs
-            appExitCode: select("Exit Code", EExitCode, EExitCode.LOGOUT),
-            appIsLoading: boolean("Loading", false),
-            appMenuHidden: boolean("Menu Hidden", false),
-            appPortalRoute: text("Portal Route", "/"),
-            appUserName: text("User", "Hugo Haferkamp"),
-            appVersion: text("Version", "1.2.3/1.2.3"),
-            showExitPage: boolean("showExitPage", false),
-            withOverflow: boolean("Overflow", false),
-            // Outputs
-            appCloseWindow: action("appCloseWindow"),
-            appLogOut: action("appLogOut")
-        }
-    }));
diff --git a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.html b/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.html
deleted file mode 100644
index 0273255..0000000
--- a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<app-card *ngIf="appItem"
-          [appCardHeader]="headerActions"
-          [appTitle]="appItem?.id + ' ' + appItem?.title">
-
-  <ng-template #headerActions>
-    <span class="dashboard-item-header-actions">
-      <a [queryParams]="{id: appItem?.id}" class="openk-button openk-button-rounded openk-info" routerLink="/details">
-        <mat-icon>find_in_page</mat-icon>
-      </a>
-
-      <button class="openk-button openk-button-rounded openk-info" disabled>
-        <mat-icon>create</mat-icon>
-      </button>
-    </span>
-  </ng-template>
-
-  <span *ngIf="appItem?.dueDate">
-    Frist: {{appItem.dueDate}}
-  </span>
-
-</app-card>
diff --git a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.spec.ts b/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.spec.ts
deleted file mode 100644
index 1998914..0000000
--- a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.spec.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {RouterTestingModule} from "@angular/router/testing";
-import {DashboardItemComponent} from "./dashboard-item.component";
-
-describe("DashboardItemComponent", () => {
-    let component: DashboardItemComponent;
-    let fixture: ComponentFixture<DashboardItemComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [DashboardItemComponent],
-            imports: [RouterTestingModule]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(DashboardItemComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.ts b/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.ts
deleted file mode 100644
index 1e56269..0000000
--- a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, Input} from "@angular/core";
-import {IStatementEntity} from "../../../../store/statements/model/IStatementEntity";
-
-@Component({
-    selector: "app-dashboard-item",
-    templateUrl: "./dashboard-item.component.html",
-    styleUrls: ["./dashboard-item.component.scss"]
-})
-export class DashboardItemComponent {
-
-    @Input()
-    public appItem: IStatementEntity;
-
-}
diff --git a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.scss b/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.scss
deleted file mode 100644
index 896dc1e..0000000
--- a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-:host {
-  display: flex;
-  flex-flow: column;
-}
-
-.dashboard-list-title {
-  margin: 0 auto 0.5em 0;
-}
-
-.dashboard-list-title-text {
-  font-size: large;
-}
-
-.dashboard-list-item {
-  width: 100%;
-
-  &:not(:last-child) {
-    margin-bottom: 1em;
-  }
-}
diff --git a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.spec.ts b/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.spec.ts
deleted file mode 100644
index b00b8be..0000000
--- a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.spec.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-
-import {DashboardListComponent} from "./dashboard-list.component";
-
-describe("DashboardListComponent", () => {
-    let component: DashboardListComponent;
-    let fixture: ComponentFixture<DashboardListComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [DashboardListComponent]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(DashboardListComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.ts b/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.ts
deleted file mode 100644
index 7caab96..0000000
--- a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, Input} from "@angular/core";
-import {IStatementEntity} from "../../../../store/statements/model/IStatementEntity";
-
-@Component({
-    selector: "app-dashboard-list",
-    templateUrl: "./dashboard-list.component.html",
-    styleUrls: ["./dashboard-list.component.scss"]
-})
-export class DashboardListComponent {
-
-    @Input()
-    public appTitle: string;
-
-    @Input()
-    public appItems: IStatementEntity[];
-
-}
diff --git a/src/app/pages/dashboard/components/dashboard/dashboard.component.html b/src/app/pages/dashboard/components/dashboard/dashboard.component.html
deleted file mode 100644
index c4a0e1c..0000000
--- a/src/app/pages/dashboard/components/dashboard/dashboard.component.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<div class="dashboard-header">
-
-  <span class="dashboard-header-title">Stellungnahmen öffentlicher Belange</span>
-
-  <div class="dashboard-header-actions">
-    <button class="openk-button openk-info" disabled>
-      <mat-icon>view_list</mat-icon>
-      Alle Stellungnahmen anzeigen
-    </button>
-
-    <a class="openk-button openk-info" routerLink="/new">
-      <mat-icon>note_add</mat-icon>
-      Neue Stellungnahme hinzufügen
-    </a>
-  </div>
-</div>
-
-<div class="dashboard">
-  <app-dashboard-list
-    [appItems]="unfinishedStatements$ | async"
-    [appTitle]="'Aktive Vorgänge'"
-    class="dashboard-list">
-
-  </app-dashboard-list>
-
-  <app-dashboard-list
-    [appItems]="finishedStatements$ | async"
-    [appTitle]="'Abgeschlossene Vorgänge'"
-    class="dashboard-list">
-
-  </app-dashboard-list>
-</div>
diff --git a/src/app/pages/dashboard/components/dashboard/dashboard.component.scss b/src/app/pages/dashboard/components/dashboard/dashboard.component.scss
deleted file mode 100644
index 46acc2e..0000000
--- a/src/app/pages/dashboard/components/dashboard/dashboard.component.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "src/styles/openk.styles";
-
-:host {
-  display: flex;
-  flex-flow: column;
-  padding: 1em;
-}
-
-.dashboard-header {
-  width: 100%;
-  display: flex;
-  flex-flow: row wrap;
-  align-items: center;
-}
-
-.dashboard-header-title {
-  margin-right: auto;
-  font-size: x-large;
-  font-weight: 600;
-}
-
-.dashboard-header-actions {
-  display: flex;
-  flex-flow: row wrap;
-  margin-left: auto;
-  justify-content: flex-end;
-
-  .openk-button {
-    margin: 0.25em;
-  }
-}
-
-.dashboard {
-  width: 100%;
-  display: flex;
-  flex-flow: row;
-  margin-top: 1em;
-}
-
-.dashboard-list {
-  margin: 0 0.5em;
-  flex: 1 1 50%;
-}
-
-@media (max-width: 50em) {
-
-  .dashboard {
-    flex-flow: row wrap;
-  }
-
-  .dashboard-list {
-    margin-bottom: 1em;
-
-    &:last-child {
-      margin-bottom: 0;
-    }
-  }
-}
diff --git a/src/app/pages/dashboard/components/dashboard/dashboard.component.ts b/src/app/pages/dashboard/components/dashboard/dashboard.component.ts
deleted file mode 100644
index 8fce5be..0000000
--- a/src/app/pages/dashboard/components/dashboard/dashboard.component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, OnInit} from "@angular/core";
-import {select, Store} from "@ngrx/store";
-import {fetchStatementsAction} from "../../../../store/statements/statements.actions";
-import {finishedStatementsListSelector, unfinishedStatementsListSelector} from "../../../../store/statements/statements.selectors";
-
-@Component({
-    selector: "app-dashboard",
-    templateUrl: "./dashboard.component.html",
-    styleUrls: ["./dashboard.component.scss"]
-})
-export class DashboardComponent implements OnInit {
-
-    public readonly finishedStatements$ = this.store.pipe(select(finishedStatementsListSelector));
-
-    public readonly unfinishedStatements$ = this.store.pipe(select(unfinishedStatementsListSelector));
-
-    public constructor(private readonly store: Store) {
-
-    }
-
-    public ngOnInit(): void {
-        this.store.dispatch(fetchStatementsAction());
-    }
-
-
-}
diff --git a/src/app/pages/dashboard/dashboard-routing.module.ts b/src/app/pages/dashboard/dashboard-routing.module.ts
deleted file mode 100644
index 37749e5..0000000
--- a/src/app/pages/dashboard/dashboard-routing.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {NgModule} from "@angular/core";
-import {RouterModule, Routes} from "@angular/router";
-import {DashboardComponent} from "./components/dashboard/dashboard.component";
-
-const routes: Routes = [
-    {
-        path: "",
-        pathMatch: "full",
-        component: DashboardComponent
-    }
-];
-
-@NgModule({
-    imports: [
-        RouterModule.forChild(routes)
-    ],
-    exports: [
-        RouterModule
-    ]
-})
-export class DashboardRoutingModule {
-
-}
diff --git a/src/app/pages/dashboard/dashboard.module.ts b/src/app/pages/dashboard/dashboard.module.ts
deleted file mode 100644
index 013ef09..0000000
--- a/src/app/pages/dashboard/dashboard.module.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {MatIconModule} from "@angular/material/icon";
-import {CardModule} from "../../shared/card/card.module";
-import {DashboardItemComponent} from "./components/dashboard-item/dashboard-item.component";
-import {DashboardListComponent} from "./components/dashboard-list/dashboard-list.component";
-import {DashboardComponent} from "./components/dashboard/dashboard.component";
-import {DashboardRoutingModule} from "./dashboard-routing.module";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        DashboardRoutingModule,
-        MatIconModule,
-        CardModule
-    ],
-    declarations: [
-        DashboardComponent,
-        DashboardListComponent,
-        DashboardItemComponent
-    ],
-    exports: [
-        DashboardComponent,
-        DashboardListComponent,
-        DashboardItemComponent
-    ]
-})
-export class DashboardModule {
-
-}
diff --git a/src/app/pages/details/components/statement-details/statement-details.component.html b/src/app/pages/details/components/statement-details/statement-details.component.html
deleted file mode 100644
index d004aa2..0000000
--- a/src/app/pages/details/components/statement-details/statement-details.component.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<div class="dashboard-header">
-
-  <span class="dashboard-header-title">Stellungnahmen öffentlicher Belange - Detailansicht</span>
-
-  <div class="dashboard-header-actions">
-
-    <a #homeAnchor class="openk-button openk-info" routerLink="/">
-      <mat-icon>arrow_back</mat-icon>
-      Zurück zur Übersicht
-    </a>
-
-  </div>
-</div>
-
-<app-card
-  *ngIf="(statement$ | async) != null"
-  [appTitle]="(id$ | async) + ' ' + (statement$ | async)?.title"
-  class="statement-details">
-
-  <span *ngIf="(statement$ | async)?.dueDate">
-    Frist: {{(statement$ | async)?.dueDate}}
-  </span>
-
-</app-card>
diff --git a/src/app/pages/details/components/statement-details/statement-details.component.scss b/src/app/pages/details/components/statement-details/statement-details.component.scss
deleted file mode 100644
index 8f9d80d..0000000
--- a/src/app/pages/details/components/statement-details/statement-details.component.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "openk.styles";
-
-:host {
-  display: flex;
-  flex-flow: column;
-  padding: 1em;
-  align-items: center;
-}
-
-.dashboard-header {
-  width: 100%;
-  display: flex;
-  flex-flow: row wrap;
-  align-items: center;
-}
-
-.dashboard-header-title {
-  margin-right: auto;
-  font-size: x-large;
-  font-weight: 600;
-}
-
-.dashboard-header-actions {
-  display: flex;
-  flex-flow: row wrap;
-  margin-left: auto;
-  justify-content: flex-end;
-
-  .openk-button {
-    margin: 0.25em;
-  }
-}
-
-.statement-details {
-  margin-top: 1em;
-  width: 100%;
-  max-width: 50em;
-}
diff --git a/src/app/pages/details/components/statement-details/statement-details.component.spec.ts b/src/app/pages/details/components/statement-details/statement-details.component.spec.ts
deleted file mode 100644
index b376702..0000000
--- a/src/app/pages/details/components/statement-details/statement-details.component.spec.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {RouterTestingModule} from "@angular/router/testing";
-import {provideMockStore} from "@ngrx/store/testing";
-import {StatementDetailsComponent} from "./statement-details.component";
-
-describe("StatementDetailsComponent", () => {
-    let component: StatementDetailsComponent;
-    let fixture: ComponentFixture<StatementDetailsComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [StatementDetailsComponent],
-            imports: [RouterTestingModule],
-            providers: [provideMockStore({})]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(StatementDetailsComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/details/components/statement-details/statement-details.component.ts b/src/app/pages/details/components/statement-details/statement-details.component.ts
deleted file mode 100644
index 2b25872..0000000
--- a/src/app/pages/details/components/statement-details/statement-details.component.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, OnDestroy, OnInit} from "@angular/core";
-import {select, Store} from "@ngrx/store";
-import {Observable, Subscription} from "rxjs";
-import {filter, switchMap} from "rxjs/operators";
-import {queryParamsIdSelector} from "../../../../store/root/selectors/query-params.selectors";
-import {IStatementEntity} from "../../../../store/statements/model/IStatementEntity";
-import {fetchStatementDetailsAction} from "../../../../store/statements/statements.actions";
-import {statementSelector} from "../../../../store/statements/statements.selectors";
-
-@Component({
-    selector: "app-statement-details",
-    templateUrl: "./statement-details.component.html",
-    styleUrls: ["./statement-details.component.scss"]
-})
-export class StatementDetailsComponent implements OnInit, OnDestroy {
-
-    public id$: Observable<number>;
-
-    public statement$: Observable<IStatementEntity>;
-
-    private subsription: Subscription;
-
-    public constructor(private readonly store: Store) {
-        this.id$ = this.store.pipe(select(queryParamsIdSelector));
-
-        this.statement$ = this.id$.pipe(
-            switchMap((id) => this.store.pipe(select(statementSelector, {id})))
-        );
-    }
-
-    public ngOnInit(): void {
-        this.subsription = this.id$
-            .pipe(filter((id) => id != null))
-            .subscribe((id) => this.store.dispatch(fetchStatementDetailsAction({id})));
-    }
-
-    public ngOnDestroy(): void {
-        if (this.subsription != null) {
-            this.subsription.unsubscribe();
-        }
-    }
-
-}
diff --git a/src/app/pages/details/statement-details-routing.module.ts b/src/app/pages/details/statement-details-routing.module.ts
deleted file mode 100644
index 8d24f64..0000000
--- a/src/app/pages/details/statement-details-routing.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {NgModule} from "@angular/core";
-import {RouterModule, Routes} from "@angular/router";
-import {StatementDetailsComponent} from "./components/statement-details/statement-details.component";
-
-const routes: Routes = [
-    {
-        path: "",
-        pathMatch: "full",
-        component: StatementDetailsComponent
-    }
-];
-
-@NgModule({
-    imports: [
-        RouterModule.forChild(routes)
-    ],
-    exports: [
-        RouterModule
-    ]
-})
-export class StatementDetailsRoutingModule {
-
-}
diff --git a/src/app/pages/details/statement-details.module.ts b/src/app/pages/details/statement-details.module.ts
deleted file mode 100644
index fdf9497..0000000
--- a/src/app/pages/details/statement-details.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {FormsModule} from "@angular/forms";
-import {MatIconModule} from "@angular/material/icon";
-import {CardModule} from "../../shared/card/card.module";
-import {StatementDetailsComponent} from "./components/statement-details/statement-details.component";
-import {StatementDetailsRoutingModule} from "./statement-details-routing.module";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        FormsModule,
-        StatementDetailsRoutingModule,
-        MatIconModule,
-        CardModule
-    ],
-    declarations: [
-        StatementDetailsComponent
-    ],
-})
-export class StatementDetailsModule {
-
-}
diff --git a/src/app/pages/new/components/new-statement/new-statement.component.html b/src/app/pages/new/components/new-statement/new-statement.component.html
deleted file mode 100644
index 66e174c..0000000
--- a/src/app/pages/new/components/new-statement/new-statement.component.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<div class="dashboard-header">
-
-  <span class="dashboard-header-title">Stellungnahmen öffentlicher Belange</span>
-
-  <div class="dashboard-header-actions">
-
-    <a #homeAnchor class="openk-button openk-info" routerLink="/">
-      <mat-icon>arrow_back</mat-icon>
-      Zurück zur Übersicht
-    </a>
-
-  </div>
-</div>
-
-<app-card appTitle="Neue Stellungnahme hinzufügen"
-          class="new-statement">
-  <form #statementForm="ngForm" (ngSubmit)="submit(statementForm);" class="new-statement-form">
-
-    <div class="new-statement-form-group">
-      <label class="new-statement-form-group-label" for="new-statement-title">
-        Titel:
-      </label>
-
-      <input #titleModel="ngModel"
-             [class.openk-danger]="titleModel.invalid && titleModel.touched"
-             [ngModel]="title"
-             class="new-statement-form-group-input openk-input" id="new-statement-title" name="title" required>
-    </div>
-
-    <div class="new-statement-form-group">
-      <label class="new-statement-form-group-label" for="new-statement-due-date">
-        Frist:
-      </label>
-
-      <input #dateModel="ngModel"
-             [class.openk-danger]="dateModel.invalid && dateModel.touched" [ngModel]="dueDate | date : 'yyyy-LL-dd'"
-             class="new-statement-form-group-input openk-input" id="new-statement-due-date"
-             name="dueDate"
-             required
-             type="date">
-    </div>
-
-    <div class="new-statement-form-group">
-      <button (click)="inputElement.click()"
-              class="openk-button new-statement-attachment-button"
-              type="button">
-
-        <mat-icon>
-          attach_file
-        </mat-icon>
-
-        <span>
-          Anlagen hinzufügen
-        </span>
-
-      </button>
-
-      <input #inputElement id="new-statement-attachments" style="display: none;" type="file">
-    </div>
-
-    <div class="new-statement-form-submit">
-      <button [disabled]="statementForm.invalid"
-              class="openk-button openk-success dashboard-header-actions-button">
-        <mat-icon>note_add</mat-icon>
-        Stellungnahme anlegen
-      </button>
-    </div>
-
-  </form>
-</app-card>
-
diff --git a/src/app/pages/new/components/new-statement/new-statement.component.scss b/src/app/pages/new/components/new-statement/new-statement.component.scss
deleted file mode 100644
index 59cf1da..0000000
--- a/src/app/pages/new/components/new-statement/new-statement.component.scss
+++ /dev/null
@@ -1,88 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "openk.styles";
-
-:host {
-  display: flex;
-  flex-flow: column;
-  padding: 1em;
-  align-items: center;
-}
-
-.dashboard-header {
-  width: 100%;
-  display: flex;
-  flex-flow: row wrap;
-  align-items: center;
-}
-
-.dashboard-header-title {
-  margin-right: auto;
-  font-size: x-large;
-  font-weight: 600;
-}
-
-.dashboard-header-actions {
-  display: flex;
-  flex-flow: row wrap;
-  margin-left: auto;
-  justify-content: flex-end;
-
-  .openk-button {
-    margin: 0.25em;
-  }
-}
-
-.new-statement {
-  margin-top: 1em;
-  max-width: 35em;
-  width: 100%;
-}
-
-.new-statement-form {
-  display: flex;
-  flex-flow: column;
-  width: 100%;
-}
-
-.new-statement-form-group {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  margin-bottom: 1em;
-}
-
-.new-statement-form-group-label {
-  padding-right: 1em;
-  display: inline-block;
-  min-width: 3em;
-}
-
-.new-statement-form-group-input {
-  width: 20em;
-}
-
-.new-statement-attachment-button {
-  width: 22em;
-  border-style: dashed;
-  margin-left: 4.5em;
-  padding: 2em 1em;
-  opacity: 0.7;
-}
-
-.new-statement-form-submit {
-  margin-top: 0.5em;
-  display: flex;
-  justify-content: flex-end;
-}
diff --git a/src/app/pages/new/components/new-statement/new-statement.component.spec.ts b/src/app/pages/new/components/new-statement/new-statement.component.spec.ts
deleted file mode 100644
index 92e6621..0000000
--- a/src/app/pages/new/components/new-statement/new-statement.component.spec.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {FormsModule} from "@angular/forms";
-import {RouterTestingModule} from "@angular/router/testing";
-import {provideMockStore} from "@ngrx/store/testing";
-import {NewStatementComponent} from "./new-statement.component";
-
-describe("NewStatementComponent", () => {
-    let component: NewStatementComponent;
-    let fixture: ComponentFixture<NewStatementComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [NewStatementComponent],
-            imports: [RouterTestingModule, FormsModule],
-            providers: [provideMockStore({})]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(NewStatementComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/pages/new/components/new-statement/new-statement.component.ts b/src/app/pages/new/components/new-statement/new-statement.component.ts
deleted file mode 100644
index 16ed821..0000000
--- a/src/app/pages/new/components/new-statement/new-statement.component.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component} from "@angular/core";
-import {NgForm} from "@angular/forms";
-import {Store} from "@ngrx/store";
-import {addNewStatementAction} from "../../../../store/statements/statements.actions";
-
-@Component({
-    selector: "app-new-statement",
-    templateUrl: "./new-statement.component.html",
-    styleUrls: ["./new-statement.component.scss"]
-})
-export class NewStatementComponent {
-
-    public title = "";
-
-    public dueDate = new Date();
-
-    public constructor(private readonly store: Store) {
-
-    }
-
-    public submit(form: NgForm) {
-        if (form.valid) {
-            this.store.dispatch(addNewStatementAction(form.value));
-        }
-    }
-
-}
diff --git a/src/app/pages/new/new-statement-routing.module.ts b/src/app/pages/new/new-statement-routing.module.ts
deleted file mode 100644
index d858139..0000000
--- a/src/app/pages/new/new-statement-routing.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {NgModule} from "@angular/core";
-import {RouterModule, Routes} from "@angular/router";
-import {NewStatementComponent} from "./components/new-statement/new-statement.component";
-
-const routes: Routes = [
-    {
-        path: "",
-        pathMatch: "full",
-        component: NewStatementComponent
-    }
-];
-
-@NgModule({
-    imports: [
-        RouterModule.forChild(routes)
-    ],
-    exports: [
-        RouterModule
-    ]
-})
-export class NewStatementRoutingModule {
-
-}
diff --git a/src/app/pages/new/new-statement.module.ts b/src/app/pages/new/new-statement.module.ts
deleted file mode 100644
index 57fda3a..0000000
--- a/src/app/pages/new/new-statement.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {FormsModule} from "@angular/forms";
-import {MatIconModule} from "@angular/material/icon";
-import {CardModule} from "../../shared/card/card.module";
-import {NewStatementComponent} from "./components/new-statement/new-statement.component";
-import {NewStatementRoutingModule} from "./new-statement-routing.module";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        FormsModule,
-        NewStatementRoutingModule,
-        MatIconModule,
-        CardModule
-    ],
-    declarations: [
-        NewStatementComponent
-    ],
-})
-export class NewStatementModule {
-
-}
diff --git a/src/app/shared/card/card.component.html b/src/app/shared/card/card.component.html
deleted file mode 100644
index ab701a3..0000000
--- a/src/app/shared/card/card.component.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<div *ngIf="appCardHeader != null || appTitle != null" class="card-header">
-  <span *ngIf="appTitle" class="card-header-title">
-    {{appTitle}}
-  </span>
-
-  <ng-container *ngTemplateOutlet="appCardHeader"></ng-container>
-</div>
-
-<div class="card-body">
-
-  <ng-content></ng-content>
-
-</div>
diff --git a/src/app/shared/card/card.component.scss b/src/app/shared/card/card.component.scss
deleted file mode 100644
index 06bcbf6..0000000
--- a/src/app/shared/card/card.component.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "openk.styles";
-
-:host {
-  background: get-color($openk-default-palette);
-  border: 1px solid $openk-form-border;
-  border-radius: 4px;
-  box-sizing: border-box;
-  display: flex;
-  flex-flow: column;
-}
-
-.card-header {
-  padding: 0.4em 0.5em 0.4em 1em;
-  background: $openk-background-highlight;
-  border-bottom: 1px solid $openk-form-border;
-  display: flex;
-  flex-flow: row wrap;
-  align-items: center;
-  border-top-right-radius: 4px;
-  border-top-left-radius: 4px;
-}
-
-.card-header-title {
-  font-size: large;
-}
-
-.card-body {
-  padding: 1em;
-  display: flex;
-  flex-flow: column;
-}
diff --git a/src/app/shared/card/card.component.spec.ts b/src/app/shared/card/card.component.spec.ts
deleted file mode 100644
index 846976c..0000000
--- a/src/app/shared/card/card.component.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {CardComponent} from "./card.component";
-
-describe("CardComponent", () => {
-    let component: CardComponent;
-    let fixture: ComponentFixture<CardComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [CardComponent]
-        })
-            .compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(CardComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/shared/card/card.component.ts b/src/app/shared/card/card.component.ts
deleted file mode 100644
index f025885..0000000
--- a/src/app/shared/card/card.component.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, Input, TemplateRef} from "@angular/core";
-
-@Component({
-    selector: "app-card",
-    templateUrl: "./card.component.html",
-    styleUrls: ["./card.component.scss"]
-})
-export class CardComponent {
-
-    @Input()
-    public appTitle: string;
-
-    @Input()
-    public appCardHeader: TemplateRef<any>;
-
-}
diff --git a/src/app/shared/card/index.ts b/src/app/shared/card/index.ts
deleted file mode 100644
index d44e396..0000000
--- a/src/app/shared/card/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./card.component";
-export * from "./card.module";
diff --git a/src/app/shared/comments/comments.component.html b/src/app/shared/comments/comments.component.html
deleted file mode 100644
index d44eb8d..0000000
--- a/src/app/shared/comments/comments.component.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<app-collapsible
-  (appCollapsedChange)="$event ? appCommentsToShow = 5 : null"
-  [appCollapsed]="appCollapsed"
-  [appTitle]="('comments.title' | translate) + ' (' + appComments?.length +')'">
-
-  <div class="comments">
-
-    <div *ngIf="appComments?.length > 0" class="comments--list">
-
-      <div *ngIf="appCommentsToShow < appComments?.length"
-           class="comments--list--buttons comments--list--buttons---size">
-
-        <button (click)="showMore()"
-                *ngIf="appCommentsToShow + 5 < appComments?.length"
-                class="comments--list--buttons--button openk-button">
-          {{"comments.showPrevious" | translate}}
-        </button>
-        <button (click)="showMore(true)"
-                class="openk-button">
-          {{"comments.showAll" | translate}}
-        </button>
-
-      </div>
-
-      <div *ngFor="let comment of appComments?.slice(-appCommentsToShow)"
-           class="comments--list--comment">
-
-        <div class="comments--list--comment--header">
-          <span class="comments--list--comment--header--author">{{comment.firstName + " " + comment.lastName}}</span>
-          <span class="comments--list--comment--header--time">
-            {{(comment.timestamp | appMomentPipe).format(timeDisplayFormat)}}
-          </span>
-          <button (click)="onDelete(comment.id)" *ngIf="comment.editable"
-                  class="comments--list--comment--header--button"
-                  mat-icon-button>
-            <mat-icon class="comments--list--comment--header--button--icon">delete_forever</mat-icon>
-          </button>
-        </div>
-        <div class="comments--list--comment--text">
-          <ng-container *ngFor="let block of comment?.text?.split('\n')">
-            {{block}} <br>
-          </ng-container>
-        </div>
-
-      </div>
-    </div>
-    <div class="comments--newcomment">
-
-    <textarea #textAreaElement (input)="onInput()"
-              [placeholder]="'comments.placeholder' | translate"
-              class="openk-textarea comments--newcomment--textfield"
-              [value]="''"
-              rows="1">
-    </textarea>
-
-      <div *ngIf="hasInputSomething" class="comments--newcomment--textfield--buttons">
-        <button #test (click)="clear()"
-                class="comments--newcomment--textfield--buttons--first-button openk-button openk-danger">
-          {{"shared.actions.delete" | translate}}
-        </button>
-        <button (click)="onSave()"
-                class="openk-button openk-success">{{"shared.actions.save" | translate}}</button>
-      </div>
-    </div>
-
-  </div>
-
-</app-collapsible>
diff --git a/src/app/shared/comments/comments.component.scss b/src/app/shared/comments/comments.component.scss
deleted file mode 100644
index 37207f7..0000000
--- a/src/app/shared/comments/comments.component.scss
+++ /dev/null
@@ -1,101 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "src/styles/openk.styles";
-
-:host {
-  display: block;
-  width: 100%;
-}
-
-.comments {
-  width: 100%;
-  height: 100%;
-  padding: 1em;
-  box-sizing: border-box;
-  position: relative;
-  display: grid;
-  grid-template-rows: 1fr auto;
-  grid-template-columns: 100%;
-}
-
-.comments--list--buttons {
-  margin-bottom: 1em;
-}
-
-.comments--list--buttons---size {
-  font-size: 11px;
-}
-
-.comments--list--buttons--button {
-  margin-right: 0.5em;
-}
-
-.comments--list--comment {
-  margin-bottom: 0.75em;
-}
-
-.comments--list--comment--header {
-  margin-bottom: 0.2em;
-  display: flex;
-  align-items: center;
-}
-
-.comments--list--comment--text {
-  width: 100%;
-  word-wrap: break-word;
-}
-
-.comments--list--comment--header--author {
-  font-weight: bold;
-  margin-right: 0.25em;
-}
-
-.comments--list--comment--header--time {
-  margin-right: 0.25em;
-}
-
-.comments--list--comment--header--button {
-  width: 16px;
-  height: 16px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  line-height: 0;
-}
-
-.comments--list--comment--header--button--icon {
-  font-size: 14px;
-  width: 16px;
-  height: 16px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.comments--newcomment--textfield {
-  resize: none;
-  width: 100%;
-  box-sizing: border-box;
-  min-height: 2.5em;
-}
-
-.comments--newcomment--textfield--buttons {
-  display: flex;
-  justify-content: flex-end;
-  margin-top: 0.5em;
-}
-
-.comments--newcomment--textfield--buttons--first-button {
-  margin-right: 0.5em;
-}
diff --git a/src/app/shared/comments/comments.component.spec.ts b/src/app/shared/comments/comments.component.spec.ts
deleted file mode 100644
index 862f10a..0000000
--- a/src/app/shared/comments/comments.component.spec.ts
+++ /dev/null
@@ -1,165 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, ElementRef, ViewChild} from "@angular/core";
-import {ComponentFixture, TestBed} from "@angular/core/testing";
-import {By} from "@angular/platform-browser";
-import {IAPICommentModel} from "../../core/api/statements";
-import {I18nModule} from "../../core/i18n";
-import {CommentsComponent} from "./comments.component";
-import {CommentsModule} from "./comments.module";
-
-@Component({
-    selector: `app-host-component`,
-    template: `
-        <app-comments #comments
-                      [appComments]="appComments"
-                      [appCommentsToShow]="appCommentsToShow"
-                      (appDelete)="deleteComment($event)"
-                      (appAdd)="addComment($event)"></app-comments>
-    `
-})
-class TestHostComponent {
-    public appComments: Array<IAPICommentModel>;
-    @ViewChild("comments", {read: ElementRef}) comments: ElementRef;
-
-    public appCommentsToShow = 3;
-
-    public constructor() {
-        this.appComments = [];
-    }
-
-    public addComment(text: string) {
-        this.appComments.push(
-            {
-                id: this.appComments.length,
-                text,
-                userName: "test01",
-                firstName: "Vorname",
-                lastName: "Nachname",
-                timestamp: new Date().toString(),
-                editable: true
-            }
-        );
-    }
-
-    public deleteComment(id: number) {
-        this.appComments.splice(id - 1, 1);
-    }
-}
-
-describe("CommentsComponent", () => {
-    let component: TestHostComponent;
-    let fixture: ComponentFixture<TestHostComponent>;
-    let childComponent: CommentsComponent;
-
-    beforeEach(async () => {
-        await TestBed.configureTestingModule({
-            declarations: [TestHostComponent, CommentsComponent],
-            imports: [
-                CommentsModule,
-                I18nModule
-            ],
-        }).compileComponents();
-    });
-    beforeEach(() => {
-        fixture = TestBed.createComponent(TestHostComponent);
-        component = fixture.componentInstance;
-        childComponent = fixture.debugElement.query(By.directive(CommentsComponent)).componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-
-    it("should emit appNewComment with the comment text", () => {
-        spyOn(childComponent.appAdd, "emit").and.callThrough();
-        const textField = fixture.debugElement.query(By.css(".comments--newcomment--textfield"));
-        textField.nativeElement.value = "test comment text";
-        childComponent.onSave();
-        expect(childComponent.appAdd.emit).toHaveBeenCalledWith("test comment text");
-    });
-
-    it("should emit appDeleteComment with the comment id", () => {
-        spyOn(childComponent.appDelete, "emit").and.callThrough();
-        childComponent.onDelete(1);
-        expect(childComponent.appDelete.emit).toHaveBeenCalledWith(1);
-    });
-
-    it("should always show the full textarea", () => {
-        spyOn(childComponent, "resize").and.callThrough();
-        const textField = fixture.debugElement.query(By.css(".comments--newcomment--textfield")).nativeElement;
-        expect(textField.scrollTop).toBe(0);
-        textField.value = `A long comment that wraps to multiple rows.
-         There should be no scroll bar, the textarea field has to grow with the given input. So scrolltop has to stay 0.`;
-        textField.dispatchEvent(new Event("input"));
-        fixture.detectChanges();
-        expect(textField.scrollTop).toBe(0);
-        expect(childComponent.resize).toHaveBeenCalled();
-    });
-
-    it("should reset value on save and delete", () => {
-        const textField = fixture.debugElement.query(By.css(".comments--newcomment--textfield")).nativeElement;
-        textField.value = `Example value`;
-        childComponent.onSave();
-        expect(textField.value).toEqual("");
-        textField.value = `Example value`;
-        childComponent.clear();
-        expect(textField.value).toEqual("");
-    });
-
-    it("should set hasInputSomething on input", () => {
-        const textField = fixture.debugElement.query(By.css(".comments--newcomment--textfield")).nativeElement;
-        expect(childComponent.hasInputSomething).toBe(false);
-        textField.value = "Example value";
-        textField.dispatchEvent(new Event("input"));
-        expect(childComponent.hasInputSomething).toBe(true);
-        textField.value = "";
-        textField.dispatchEvent(new Event("input"));
-        expect(childComponent.hasInputSomething).toBe(false);
-    });
-
-    it("should only show save button when there was a text input", () => {
-        let button = fixture.debugElement.query(By.css(".openk-button.openk-success"));
-        expect(button).toBeFalsy();
-        childComponent.hasInputSomething = true;
-        fixture.detectChanges();
-        button = fixture.debugElement.query(By.css(".openk-button.openk-success"));
-        expect(button).toBeTruthy();
-    });
-
-    it("should show commentsToShow amount of comments", () => {
-        childComponent.appComments = new Array(22).fill(1).map((el, index) => ({
-            id: index,
-            text: "test text",
-            userName: "User1",
-            firstName: "Franz",
-            lastName: "Meier",
-            timestamp: "2007-08-31T16:47+00:00",
-            editable: true
-        }));
-        childComponent.appCommentsToShow = 5;
-        fixture.detectChanges();
-        let comments = fixture.debugElement.queryAll(By.css(".comments--list--comment"));
-        expect(comments.length).toEqual(5);
-        childComponent.showMore();
-        fixture.detectChanges();
-        comments = fixture.debugElement.queryAll(By.css(".comments--list--comment"));
-        expect(comments.length).toEqual(10);
-        childComponent.showMore(true);
-        fixture.detectChanges();
-        comments = fixture.debugElement.queryAll(By.css(".comments--list--comment"));
-        expect(comments.length).toEqual(22);
-    });
-});
diff --git a/src/app/shared/comments/comments.component.stories.ts b/src/app/shared/comments/comments.component.stories.ts
deleted file mode 100644
index d8b10ff..0000000
--- a/src/app/shared/comments/comments.component.stories.ts
+++ /dev/null
@@ -1,161 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {RouterTestingModule} from "@angular/router/testing";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {IAPICommentModel} from "../../core/api/statements";
-import {I18nModule} from "../../core/i18n";
-import {CommentsComponent} from "./comments.component";
-import {CommentsModule} from "./comments.module";
-
-const comments: IAPICommentModel[] = [
-    {
-        id: 0,
-        text: "Ein kurzer Kommentar.",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2015-08-31T16:47+00:00",
-        editable: true
-    },
-    {
-        id: 1,
-        text: "Ein längerer Kommentar. Ein weiterer Satz. Ein weiterer Satz. Ein weiterer Satz. Ein weiterer Satz. Ein weiterer Satz.",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2015-08-31T18:13+00:00",
-        editable: true
-    },
-    {
-        id: 2,
-        text: "Ein Kommentar von einem anderen Nutzer mit einem Zeilenumbruch. \nWeitere Zeile.",
-        userName: "User2",
-        firstName: "Peter",
-        lastName: "Fox",
-        timestamp: "2015-09-01T06:17+00:00",
-        editable: false
-    },
-    {
-        id: 3,
-        text: "Ein weiterer Kommentar von einem anderen Nutzer.",
-        userName: "User2",
-        firstName: "Peter",
-        lastName: "Fox",
-        timestamp: "2015-09-01T11:17+00:00",
-        editable: false
-    },
-    {
-        id: 4,
-        text: "a",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2015-09-01T11:17+00:00",
-        editable: true
-    },
-    {
-        id: 5,
-        text: `Extrem langer Kommentar. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz.
-            Das ist ein Satz. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz.
-            Das ist ein Satz. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz.
-            Das ist ein Satz. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz. Das ist ein Satz.
-            Das ist ein Satz. Das ist ein Satz.`,
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2015-09-01T11:17+00:00",
-        editable: true
-    },
-    {
-        id: 6,
-        text: "test text",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2007-08-31T16:47+00:00",
-        editable: true
-    },
-    {
-        id: 7,
-        text: "test text",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2007-08-31T16:47+00:00",
-        editable: true
-    },
-    {
-        id: 8,
-        text: "test text",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2007-08-31T16:47+00:00",
-        editable: true
-    },
-    {
-        id: 9,
-        text: "test text",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2007-08-31T16:47+00:00",
-        editable: true
-    },
-    {
-        id: 10,
-        text: "test text",
-        userName: "User1",
-        firstName: "Franz",
-        lastName: "Meier",
-        timestamp: "2007-08-31T16:47+00:00",
-        editable: true
-    }
-].map((comment, id) => ({...comment, text: id + " " + comment.text}));
-
-const addComment = (text: string) => {
-    comments.push(
-        {
-            id: comments.length,
-            text: comments.length + " " + text,
-            userName: "test01",
-            firstName: "Vorname",
-            lastName: "Nachname",
-            timestamp: new Date().toString(),
-            editable: true
-        }
-    );
-};
-
-const deleteComment = (id: number) => {
-    comments.splice(id, 1);
-    for (let i = id; i < comments.length; i++) {
-        comments[i].id--;
-    }
-};
-
-storiesOf("Features / 03 Comments", module)
-    .addDecorator(moduleMetadata({declarations: [], imports: [I18nModule, RouterTestingModule, CommentsModule]}))
-    .add("CommentsComponent", () => ({
-        template: `
-            <app-comments style="padding: 1em; box-sizing: border-box" [appComments]="comments" (appAdd)="addComment($event)" (appDelete)="deleteComment($event)"></app-comments>
-        `,
-        props: {
-            comments,
-            addComment,
-            deleteComment
-        }
-    }));
-
-
diff --git a/src/app/shared/comments/comments.component.ts b/src/app/shared/comments/comments.component.ts
deleted file mode 100644
index 0abbc6a..0000000
--- a/src/app/shared/comments/comments.component.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from "@angular/core";
-import {IAPICommentModel} from "../../core/api/statements";
-import {momentFormatDisplayFullDateAndTime} from "../../util/moment";
-
-@Component({
-    selector: "app-comments",
-    templateUrl: "./comments.component.html",
-    styleUrls: ["./comments.component.scss"]
-})
-export class CommentsComponent {
-
-    @Input()
-    public appCollapsed: boolean;
-
-    @Input()
-    public appCommentsToShow = 5;
-
-    @Input()
-    public appComments: Array<IAPICommentModel>;
-
-    public hasInputSomething = false;
-
-    @Output()
-    public appDelete: EventEmitter<number> = new EventEmitter();
-
-    @Output()
-    public appAdd: EventEmitter<string> = new EventEmitter();
-
-    @Input()
-    public timeDisplayFormat: string = momentFormatDisplayFullDateAndTime;
-
-    @ViewChild("textAreaElement")
-    private textAreaRef: ElementRef<HTMLTextAreaElement>;
-
-    public onInput() {
-        this.hasInputSomething = this.textAreaRef.nativeElement.value !== "";
-        this.resize();
-    }
-
-    public resize() {
-        this.textAreaRef.nativeElement.style.height = "1px";
-        this.textAreaRef.nativeElement.style.height = this.textAreaRef.nativeElement.scrollHeight + "px";
-    }
-
-    public onSave() {
-        this.appAdd.emit(this.textAreaRef.nativeElement.value);
-        this.clear();
-    }
-
-    public onDelete(id: number) {
-        this.appDelete.emit(id);
-    }
-
-    public clear() {
-        this.textAreaRef.nativeElement.value = "";
-        this.hasInputSomething = false;
-        this.resize();
-    }
-
-    public showMore(all = false) {
-        if (this.appCommentsToShow == null) {
-            this.appCommentsToShow = 0;
-        }
-        this.appCommentsToShow = all ? undefined : Math.min(this.appComments?.length, this.appCommentsToShow + 5);
-    }
-
-}
diff --git a/src/app/shared/comments/comments.module.ts b/src/app/shared/comments/comments.module.ts
deleted file mode 100644
index a61d7c1..0000000
--- a/src/app/shared/comments/comments.module.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {MatButtonModule} from "@angular/material/button";
-import {MatIconModule} from "@angular/material/icon";
-import {TranslateModule} from "@ngx-translate/core";
-import {DateControlModule} from "../controls/date-control";
-import {CollapsibleModule} from "../layout/collapsible";
-import {CommentsComponent} from "./comments.component";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        MatIconModule,
-        TranslateModule,
-        MatButtonModule,
-        DateControlModule,
-        CollapsibleModule
-    ],
-    declarations: [
-        CommentsComponent
-    ],
-    exports: [
-        CommentsComponent
-    ]
-})
-export class CommentsModule {
-
-}
diff --git a/src/app/shared/comments/index.ts b/src/app/shared/comments/index.ts
deleted file mode 100644
index f268b0c..0000000
--- a/src/app/shared/comments/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./comments.module";
diff --git a/src/app/shared/controls/common/abstract-control-value-accessor.component.spec.ts b/src/app/shared/controls/common/abstract-control-value-accessor.component.spec.ts
deleted file mode 100644
index 0c0c3f6..0000000
--- a/src/app/shared/controls/common/abstract-control-value-accessor.component.spec.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {AbstractControlValueAccessorComponent} from "./abstract-control-value-accessor.component";
-
-class ControlValueAccessorSpec extends AbstractControlValueAccessorComponent<number> {
-
-}
-
-describe("ControlValueAccessor", () => {
-
-    let component: ControlValueAccessorSpec;
-
-    beforeEach((() => {
-        component = new ControlValueAccessorSpec();
-    }));
-
-    it("#.writeValue should change appValue", () => {
-        const onChangeSpy = spyOn(component, "onChange");
-        const onTouchSpy = spyOn(component, "onTouch");
-        component.appValue = 0;
-        component.writeValue(19);
-        expect(component.appValue).toBe(19);
-        expect(onChangeSpy).not.toHaveBeenCalled();
-        expect(onTouchSpy).not.toHaveBeenCalled();
-
-        component.writeValue(190, true);
-        expect(component.appValue).toBe(190);
-        expect(onChangeSpy).toHaveBeenCalledWith(190);
-        expect(onTouchSpy).toHaveBeenCalled();
-    });
-
-    it("#.setDisable should set appDisabled", () => {
-        expect(component.appDisabled).not.toBeDefined();
-        component.setDisabledState(true);
-        expect(component.appDisabled).toBe(true);
-        component.setDisabledState(true);
-        expect(component.appDisabled).toBe(true);
-    });
-
-    it("should register listeners", () => {
-        // These calls should be ignored (because null is not a function)
-        component.registerOnChange(null);
-        component.registerOnTouched(null);
-        expect(component.onChange).not.toThrow();
-        expect(component.onTouch).not.toThrow();
-
-        const fn = () => 19;
-        component.registerOnChange(fn);
-        component.registerOnTouched(fn);
-        expect(component.onChange).toBe(fn);
-        expect(component.onTouch).toBe(fn);
-    });
-
-});
diff --git a/src/app/shared/controls/common/abstract-control-value-accessor.component.ts b/src/app/shared/controls/common/abstract-control-value-accessor.component.ts
deleted file mode 100644
index a679d25..0000000
--- a/src/app/shared/controls/common/abstract-control-value-accessor.component.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {EventEmitter, Input, Output} from "@angular/core";
-import {ControlValueAccessor} from "@angular/forms";
-
-export abstract class AbstractControlValueAccessorComponent<T> implements ControlValueAccessor {
-
-    @Input()
-    public appDisabled: boolean;
-
-    @Input()
-    public appValue: T;
-
-    @Output()
-    public appValueChange: EventEmitter<T> = new EventEmitter<T>();
-
-    public onChange = (_: T) => null;
-
-    public onTouch = () => null;
-
-    /**
-     * Sets a new value to the control.
-     * @param obj New value for the control
-     * @param emit If true, the new value will be emitted via the appValueChange event emitter.
-     */
-    public writeValue(obj: T, emit?: boolean) {
-        this.appValue = obj;
-        if (emit) {
-            this.appValueChange.emit(this.appValue);
-            this.onChange(this.appValue);
-            this.onTouch();
-        }
-    }
-
-    public registerOnChange(fn: any): void {
-        this.onChange = typeof fn === "function" ? fn : this.onChange;
-    }
-
-    public registerOnTouched(fn: any): void {
-        this.onTouch = typeof fn === "function" ? fn : this.onTouch;
-    }
-
-    public setDisabledState(isDisabled: boolean) {
-        this.appDisabled = isDisabled;
-    }
-
-}
diff --git a/src/app/shared/controls/contact-select/index.ts b/src/app/shared/controls/contact-select/index.ts
index 5f0f206..3fa26ad 100644
--- a/src/app/shared/controls/contact-select/index.ts
+++ b/src/app/shared/controls/contact-select/index.ts
@@ -10,3 +10,9 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
+
+export * from "./contact-select.component";
+export * from "./contact-select.module";
+
+export * from "./contact-select.component";
+export * from "./contact-select.module";
diff --git a/src/app/shared/controls/date-control/pipe/moment.pipe.spec.ts b/src/app/shared/controls/date-control/pipe/moment.pipe.spec.ts
index b351041..359ee5a 100644
--- a/src/app/shared/controls/date-control/pipe/moment.pipe.spec.ts
+++ b/src/app/shared/controls/date-control/pipe/moment.pipe.spec.ts
@@ -47,10 +47,6 @@
             fixture.detectChanges();
         });
 
-        it("should convert the input date to default moment format", () => {
-            expect(el.textContent).toEqual("2020-06-14T11:11:11+02:00");
-        });
-
         it("should convert the input date to the given display format", () => {
             component.displayFormat = "DD.MM.YYYY";
             fixture.detectChanges();
@@ -65,7 +61,6 @@
             const returnObj = returnMoment.toObject();
             expect(returnObj).toBeTruthy();
             expect(date.getFullYear()).toEqual(returnObj.years);
-            expect(returnMoment.format()).toEqual("2020-06-14T11:11:11+02:00");
         });
     });
 });
diff --git a/src/app/shared/controls/file-drop/component/file-drop.component.html b/src/app/shared/controls/file-drop/component/file-drop.component.html
index 6f2c134..ba860d6 100644
--- a/src/app/shared/controls/file-drop/component/file-drop.component.html
+++ b/src/app/shared/controls/file-drop/component/file-drop.component.html
@@ -12,7 +12,7 @@
  -------------------------------------------------------------------------------->
 
 <span (dragover)="onDragOver($event)"
-      *ngFor="let file of appValue; let index = index;"
+      *ngFor="let item of appValue; let index = index;"
       class="attachments-file">
 
   <button (click)="onDelete(index)"
@@ -22,7 +22,7 @@
     <mat-icon>clear</mat-icon>
   </button>
 
-  {{file?.name}}
+  {{item?.attachment?.name}}
 
 </span>
 
diff --git a/src/app/shared/controls/file-drop/component/file-drop.component.spec.ts b/src/app/shared/controls/file-drop/component/file-drop.component.spec.ts
index 5bb0cb3..4e2cbe8 100644
--- a/src/app/shared/controls/file-drop/component/file-drop.component.spec.ts
+++ b/src/app/shared/controls/file-drop/component/file-drop.component.spec.ts
@@ -51,7 +51,7 @@
             expect(component.appValue).toEqual(undefined);
             component.appDisabled = false;
             component.onInput(fakeFileList as FileList);
-            expect(component.appValue).toEqual([file]);
+            expect(component.appValue).toEqual(getAttachmentListWithTags([file]));
         });
 
         it("should not add the files to appValue when the app is disabled", () => {
@@ -65,40 +65,41 @@
             spyOn(component.appValueChange, "emit");
             component.appDisabled = false;
             component.onInput(fakeFileList as FileList);
-            expect(component.appValueChange.emit).toHaveBeenCalledWith([file]);
+            expect(component.appValueChange.emit).toHaveBeenCalledWith(getAttachmentListWithTags([file]));
         });
     });
 
     describe("onDelete", () => {
         it("should not delete the file when disabled or the index is invalid", () => {
             const fileArray = [file, anotherFile, thirdFile];
+            const attachmentList = getAttachmentListWithTags(fileArray);
 
-            component.appValue = fileArray;
+            component.appValue = attachmentList;
             component.appDisabled = true;
             component.onDelete(2);
-            expect(component.appValue).toEqual(fileArray);
+            expect(component.appValue).toEqual(attachmentList);
 
             component.appDisabled = false;
             component.onDelete(14);
-            expect(component.appValue).toEqual(fileArray);
+            expect(component.appValue).toEqual(attachmentList);
         });
 
         it("should delete the file found at the index in appValue", () => {
-            component.appValue = [file, anotherFile, thirdFile];
+            component.appValue = getAttachmentListWithTags([file, anotherFile, thirdFile]);
             component.appDisabled = false;
             component.onDelete(1);
-            expect(component.appValue).toEqual([file, thirdFile]);
+            expect(component.appValue).toEqual(getAttachmentListWithTags([file, thirdFile]));
             component.onDelete(1);
-            expect(component.appValue).toEqual([file]);
+            expect(component.appValue).toEqual(getAttachmentListWithTags([file]));
         });
 
         it("should emit the deleted file for appValueDelete and the new appValue array for appValueChange", () => {
             spyOn(component.appValueChange, "emit");
             spyOn(component.appValueDelete, "emit");
-            component.appValue = [file, anotherFile, thirdFile];
+            component.appValue = getAttachmentListWithTags([file, anotherFile, thirdFile]);
             component.appDisabled = false;
             component.onDelete(1);
-            expect(component.appValueChange.emit).toHaveBeenCalledWith([file, thirdFile]);
+            expect(component.appValueChange.emit).toHaveBeenCalledWith(getAttachmentListWithTags([file, thirdFile]));
             expect(component.appValueDelete.emit).toHaveBeenCalledWith(anotherFile);
         });
     });
@@ -166,6 +167,19 @@
             expect(dragEvent.preventDefault).toHaveBeenCalled();
         });
     });
+
+    describe("openDialog", () => {
+        it("should call the click function for the inputElement if not disabled", () => {
+            spyOn(component.inputElement.nativeElement, "click");
+            component.appDisabled = true;
+            component.openDialog();
+            expect(component.inputElement.nativeElement.click).not.toHaveBeenCalled();
+
+            component.appDisabled = false;
+            component.openDialog();
+            expect(component.inputElement.nativeElement.click).toHaveBeenCalled();
+        });
+    });
 });
 
 class FakeFileList implements FileList {
@@ -183,3 +197,14 @@
         return this.data[idx];
     }
 }
+
+const getAttachmentWithTags = (attachment: File) => {
+    return {
+        attachment,
+        tags: []
+    };
+};
+
+const getAttachmentListWithTags = (attachments: any[]) => {
+    return attachments.map((_) => getAttachmentWithTags(_));
+};
diff --git a/src/app/shared/controls/file-drop/component/file-drop.component.ts b/src/app/shared/controls/file-drop/component/file-drop.component.ts
index 02ef3e5..9682501 100644
--- a/src/app/shared/controls/file-drop/component/file-drop.component.ts
+++ b/src/app/shared/controls/file-drop/component/file-drop.component.ts
@@ -13,7 +13,8 @@
 
 import {Component, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, ViewChild} from "@angular/core";
 import {NG_VALUE_ACCESSOR} from "@angular/forms";
-import {arrayJoin} from "../../../../util/store";
+import {IAttachmentWithTags} from "../../../../store";
+import {arrayJoin} from "../../../../util";
 import {AbstractControlValueAccessorComponent} from "../../common";
 
 @Component({
@@ -28,12 +29,18 @@
         }
     ]
 })
-export class FileDropComponent extends AbstractControlValueAccessorComponent<File[]> {
+export class FileDropComponent extends AbstractControlValueAccessorComponent<IAttachmentWithTags<File>[]> {
 
     @HostBinding("class.no-drop")
     @Input()
     public appDisabled = false;
 
+    /**
+     * List of tag ids which are added automatically to dropped files.
+     */
+    @Input()
+    public appAutoTagIds: string[];
+
     @Output()
     public appValueDelete = new EventEmitter<File>();
 
@@ -46,12 +53,7 @@
             return;
         }
 
-        try {
-            // Prevent dropped files from being opened.
-            event.preventDefault();
-        } catch (e) {
-            return;
-        }
+        event.preventDefault();
     }
 
     @HostListener("drop", ["$event"])
@@ -77,22 +79,27 @@
         if (this.appDisabled) {
             return;
         }
-
-        this.writeValue(arrayJoin(this.appValue, fileListToFileArray(fileList)), true);
+        const value = arrayJoin(
+            this.appValue,
+            fileListToFileArray(fileList)
+                .map((_) => ({attachment: _, tags: arrayJoin(this.appAutoTagIds)}))
+        );
+        this.writeValue(value, true);
     }
 
     public onDelete(index: number) {
-        if (this.appDisabled || !Array.isArray(this.appValue) || this.appValue[index] == null) {
+        if (this.appDisabled || !Array.isArray(this.appValue) || this.appValue[index]?.attachment == null) {
             return;
         }
 
-        const file = this.appValue[index];
-        this.writeValue(this.appValue.filter((_) => _ !== file), true);
+        const file = this.appValue[index].attachment;
+        const value = this.appValue.filter((_) => _?.attachment !== file);
+        this.writeValue(value, true);
         this.appValueDelete.emit(file);
     }
 
-    public writeValue(obj: File[], emit?: boolean): void {
-        super.writeValue(Array.isArray(obj) ? obj.filter((file) => file instanceof File) : [], emit);
+    public writeValue(obj: IAttachmentWithTags<File>[], emit?: boolean): void {
+        super.writeValue(arrayJoin(obj).filter((_) => _?.attachment instanceof File), emit);
     }
 
 }
@@ -100,8 +107,8 @@
 function fileListToFileArray(fileList: FileList): File[] {
     try {
         const result: File[] = [];
-        for (let i = 0; i < fileList?.length; i++) {
-            result.push(fileList?.item(i));
+        for (let i = 0; i < fileList.length; i++) {
+            result.push(fileList.item(i));
         }
         return result;
     } catch (e) {
diff --git a/src/app/shared/controls/file-select/component/file-select.component.spec.ts b/src/app/shared/controls/file-select/component/file-select.component.spec.ts
index 8e1a692..be50be6 100644
--- a/src/app/shared/controls/file-select/component/file-select.component.spec.ts
+++ b/src/app/shared/controls/file-select/component/file-select.component.spec.ts
@@ -16,6 +16,7 @@
 import {By} from "@angular/platform-browser";
 import {IAPIAttachmentModel} from "../../../../core/api";
 import {I18nModule} from "../../../../core/i18n";
+import {IAttachmentWithTags} from "../../../../store/attachments/model";
 import {FileSelectModule} from "../file-select.module";
 import {FileSelectComponent} from "./file-select.component";
 
@@ -49,7 +50,12 @@
         }
     ];
 
-    public appValue: number[] = [2];
+    public appValue: IAttachmentWithTags<number>[] = [
+        {
+            attachment: 2,
+            tags: []
+        }
+    ];
 }
 
 describe("FileSelectComponent", () => {
@@ -95,9 +101,9 @@
     });
 
     it("should remove the file id from app value on select", () => {
-        childComponent.appValue = [2, 3];
+        childComponent.appValue = getAttachmentListWithTags([2, 3]);
         childComponent.select(2);
-        expect(childComponent.appValue).toEqual([3]);
+        expect(childComponent.appValue).toEqual(getAttachmentListWithTags([3]));
         childComponent.select(3);
         expect(childComponent.appValue).toEqual([]);
     });
@@ -105,17 +111,9 @@
     it("should add the file id to app value on deselect", () => {
         childComponent.appValue = [];
         childComponent.deselect(2);
-        expect(childComponent.appValue).toEqual([2]);
+        expect(childComponent.appValue).toEqual(getAttachmentListWithTags([2]));
         childComponent.deselect(3);
-        expect(childComponent.appValue).toEqual([2, 3]);
-    });
-
-    it("should add the file id to app value on deselect", () => {
-        childComponent.appValue = [];
-        childComponent.deselect(2);
-        expect(childComponent.appValue).toEqual([2]);
-        childComponent.deselect(3);
-        expect(childComponent.appValue).toEqual([2, 3]);
+        expect(childComponent.appValue).toEqual(getAttachmentListWithTags([2, 3]));
     });
 
     it("should add and remove items from appValue when no input value was given", () => {
@@ -124,6 +122,18 @@
         expect(childComponent.appValue).toEqual([]);
         childComponent.appValue = undefined;
         childComponent.deselect(3);
-        expect(childComponent.appValue).toEqual([3]);
+        expect(childComponent.appValue).toEqual(getAttachmentListWithTags([3]));
     });
 });
+
+const getAttachmentWithTags = (attachment: number) => {
+    return {
+        attachment,
+        tags: [],
+        remove: true
+    };
+};
+
+const getAttachmentListWithTags = (attachments: any[]) => {
+    return attachments.map((_) => getAttachmentWithTags(_));
+};
diff --git a/src/app/shared/controls/file-select/component/file-select.component.ts b/src/app/shared/controls/file-select/component/file-select.component.ts
index b194ec5..9074918 100644
--- a/src/app/shared/controls/file-select/component/file-select.component.ts
+++ b/src/app/shared/controls/file-select/component/file-select.component.ts
@@ -13,8 +13,9 @@
 
 import {ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output} from "@angular/core";
 import {NG_VALUE_ACCESSOR} from "@angular/forms";
-import {IAPIAttachmentModel} from "../../../../core/api";
-import {arrayJoin} from "../../../../util/store";
+import {IAPIAttachmentModel} from "../../../../core";
+import {IAttachmentWithTags} from "../../../../store";
+import {arrayJoin} from "../../../../util";
 import {AbstractControlValueAccessorComponent} from "../../common";
 
 @Component({
@@ -30,7 +31,7 @@
         }
     ]
 })
-export class FileSelectComponent extends AbstractControlValueAccessorComponent<number[]> {
+export class FileSelectComponent extends AbstractControlValueAccessorComponent<IAttachmentWithTags<number>[]> {
 
     private static id = 0;
 
@@ -48,19 +49,19 @@
     }
 
     public isSelected(attachmentId: number): boolean {
-        return !arrayJoin(this.appValue).some((id) => id === attachmentId);
+        return !arrayJoin(this.appValue).some((_) => _?.attachment === attachmentId);
     }
 
     public select(attachmentId: number) {
-        const value = arrayJoin(this.appValue).filter((id) => id !== attachmentId);
+        const value = arrayJoin(this.appValue).filter((_) => _?.attachment !== attachmentId);
         this.writeValue(value, true);
     }
 
     public deselect(attachmentId: number) {
-        this.writeValue(arrayJoin(this.appValue, [attachmentId]), true);
+        this.writeValue(arrayJoin(this.appValue, [{attachment: attachmentId, tags: [], remove: true}]), true);
     }
 
-    public writeValue(obj: number[], emit?: boolean) {
+    public writeValue(obj: IAttachmentWithTags<number>[], emit?: boolean) {
         super.writeValue(obj, emit);
         this.changeDetectorRef.markForCheck();
     }
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/controls/text-field/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/controls/text-field/index.ts
index 2e6e007..f223969 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/controls/text-field/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./text-field.module";
diff --git a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.html b/src/app/shared/controls/text-field/text-field.component.html
similarity index 70%
rename from src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.html
rename to src/app/shared/controls/text-field/text-field.component.html
index a412f89..129e808 100644
--- a/src/app/pages/dashboard/components/dashboard-list/dashboard-list.component.html
+++ b/src/app/shared/controls/text-field/text-field.component.html
@@ -11,14 +11,10 @@
  * SPDX-License-Identifier: EPL-2.0
  -------------------------------------------------------------------------------->
 
-<div class="dashboard-list-title">
-  <span class="dashboard-list-title-text">
-    {{appTitle}}
-  </span>
-</div>
-
-<app-dashboard-item
-  *ngFor="let item of appItems"
-  [appItem]="item"
-  class="dashboard-list-item">
-</app-dashboard-item>
+<textarea #inputElement
+          (focusout)="onFocusOut()"
+          (input)="onInput(inputElement.value)"
+          [value]="appValue"
+          class="openk-textarea text-input"
+          rows="1">
+</textarea>
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/controls/text-field/text-field.component.scss
similarity index 85%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/shared/controls/text-field/text-field.component.scss
index fc6c436..563859b 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/controls/text-field/text-field.component.scss
@@ -11,7 +11,9 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+.text-input {
+  resize: none;
+  width: 100%;
+  box-sizing: border-box;
+  min-height: 2.5em;
 }
diff --git a/src/app/shared/controls/text-field/text-field.component.spec.ts b/src/app/shared/controls/text-field/text-field.component.spec.ts
new file mode 100644
index 0000000..71da2ca
--- /dev/null
+++ b/src/app/shared/controls/text-field/text-field.component.spec.ts
@@ -0,0 +1,63 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {TextFieldComponent} from "./text-field.component";
+import {TextInputFieldModule} from "./text-field.module";
+
+describe("TextFieldComponent", () => {
+    let component: TextFieldComponent;
+    let fixture: ComponentFixture<TextFieldComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                TextInputFieldModule
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(TextFieldComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it("should be created", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should resize the textarea to always show all text", () => {
+        component.inputElement.nativeElement.style.height = "1px";
+        component.inputElement.nativeElement.value =
+            "A text that has to be of a certain length so it needs multiple lines to display. This should be enough.";
+        component.resize();
+        expect(component.inputElement.nativeElement.style.height).toEqual(component.inputElement.nativeElement.scrollHeight + "px");
+    });
+
+    it("should emit appFocusOut", () => {
+        spyOn(component.appFocusOut, "emit").and.callThrough();
+        component.onFocusOut();
+        expect(component.appFocusOut.emit).toHaveBeenCalled();
+    });
+
+    it("should call resize() and emit value on appInputValue", () => {
+        spyOn(component.appInputValue, "emit").and.callThrough();
+        spyOn(component, "resize").and.callThrough();
+        const value = "value";
+        component.onInput(value);
+        expect(component.resize).toHaveBeenCalled();
+        expect(component.appInputValue.emit).toHaveBeenCalledWith(value);
+    });
+
+});
diff --git a/src/app/shared/controls/text-field/text-field.component.ts b/src/app/shared/controls/text-field/text-field.component.ts
new file mode 100644
index 0000000..518e4e4
--- /dev/null
+++ b/src/app/shared/controls/text-field/text-field.component.ts
@@ -0,0 +1,60 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import {AfterContentChecked, Component, ElementRef, EventEmitter, Input, Output, ViewChild} from "@angular/core";
+import {timer} from "rxjs";
+
+@Component({
+    selector: "app-text-field",
+    templateUrl: "./text-field.component.html",
+    styleUrls: ["./text-field.component.scss"]
+})
+export class TextFieldComponent implements AfterContentChecked {
+
+    @ViewChild("inputElement") inputElement: ElementRef;
+
+    @Input()
+    public appIsFocused: boolean;
+
+    @Input()
+    public appValue: string;
+
+    @Output()
+    public appInputValue = new EventEmitter<string>();
+
+    @Output()
+    public appFocusOut = new EventEmitter<void>();
+
+    public async ngAfterContentChecked() {
+        if (this.inputElement && this.appIsFocused) {
+            await timer(0).toPromise();
+            this.inputElement.nativeElement.focus();
+            this.resize();
+        }
+    }
+
+    public resize() {
+        this.inputElement.nativeElement.style.height = "1px";
+        this.inputElement.nativeElement.style.height = this.inputElement.nativeElement.scrollHeight + "px";
+    }
+
+    public onFocusOut() {
+        this.appFocusOut.emit();
+    }
+
+    public onInput(value: string) {
+        this.resize();
+        this.appInputValue.emit(value);
+    }
+
+}
+
diff --git a/src/app/shared/card/card.module.ts b/src/app/shared/controls/text-field/text-field.module.ts
similarity index 77%
rename from src/app/shared/card/card.module.ts
rename to src/app/shared/controls/text-field/text-field.module.ts
index ef8e0ad..d4a7bef 100644
--- a/src/app/shared/card/card.module.ts
+++ b/src/app/shared/controls/text-field/text-field.module.ts
@@ -13,21 +13,19 @@
 
 import {CommonModule} from "@angular/common";
 import {NgModule} from "@angular/core";
-import {MatIconModule} from "@angular/material/icon";
-import {CardComponent} from "./card.component";
+import {TextFieldComponent} from "./text-field.component";
 
 @NgModule({
     imports: [
-        CommonModule,
-        MatIconModule
+        CommonModule
     ],
     declarations: [
-        CardComponent
+        TextFieldComponent
     ],
     exports: [
-        CardComponent
+        TextFieldComponent
     ]
 })
-export class CardModule {
+export class TextInputFieldModule {
 
 }
diff --git a/src/app/shared/date-control/component/date-control.component.html b/src/app/shared/date-control/component/date-control.component.html
deleted file mode 100644
index 5359281..0000000
--- a/src/app/shared/date-control/component/date-control.component.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<span #dropDown="appDropDown" [appConnectedPositions]="connectedPositions"
-      [appDisabled]="appDisabled"
-      [appDropDown]="calendarRef"
-      class="container">
-
-  <input
-    #inputElement
-    (blur)="onInputBlur(inputElement)"
-    (input)="onInputChange(inputElement.value)"
-    (keydown)="onKeyDown($event)"
-    (mousedown)="onMouseDown(inputElement)"
-    [class.calendar-control-input-opened-bottom]="dropDown.position?.panelClass === 'bottom'"
-    [class.calendar-control-input-opened-top]="dropDown.position?.panelClass === 'top'"
-    [class.openk-danger]="appDanger"
-    [class.openk-focus]="dropDown.isOpen"
-    [class.openk-info]="appInfo"
-    [class.openk-success]="appSuccess"
-    [class.openk-warning]="appWarning"
-    [disabled]="appDisabled"
-    [id]="appId"
-    [ngModel]="(displayedValue | appMomentPipe : appInternalFormat).format(appDisplayFormat)"
-    autocomplete="off"
-    class="openk-input calendar-control-input"
-    name="dueDate"
-    required
-    type="text">
-
-  <mat-icon (mousedown)="$event.preventDefault(); inputElement.focus(); toggle();"
-            [class.calendar-icon-open]="dropDown?.isOpen"
-            class="calendar-icon">
-    today
-  </mat-icon>
-
-</span>
-
-<ng-template #calendarRef>
-  <p-calendar #calendar
-              (keydown)="onKeyDown($event, true)"
-              (ngModelChange)="onCalendarChange($event);"
-              (onMonthChange)="dropDown.updatePosition()"
-              (focusout)="inputElement.focus();"
-              [disabled]="appDisabled"
-              [inline]="true"
-              [ngModel]="value"
-              class="openk-datepicker">
-
-    <ng-template let-date pTemplate="date">
-      <span [class.calendar-control-day-selected]="calendar.isSelected(date)"
-            [class.calendar-control-day-today]="date?.today"
-            class="calendar-control-day">
-        {{date.day}}
-      </span>
-    </ng-template>
-
-    <ng-template let-date pTemplate="disabledDate">
-      <span [class.calendar-control-day-selected]="calendar.isSelected(date)"
-            [class.calendar-control-day-today]="date?.today"
-            class="calendar-control-day calendar-control-day-disabled">
-        {{date.day}}
-      </span>
-    </ng-template>
-
-  </p-calendar>
-</ng-template>
diff --git a/src/app/shared/date-control/component/date-control.component.scss b/src/app/shared/date-control/component/date-control.component.scss
deleted file mode 100644
index da5f1c5..0000000
--- a/src/app/shared/date-control/component/date-control.component.scss
+++ /dev/null
@@ -1,101 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "src/styles/openk.styles";
-
-:host {
-  display: inline-flex;
-  position: relative;
-  font-size: 0.875em;
-}
-
-.container {
-  display: inline-flex;
-  width: 100%;
-  height: 100%;
-}
-
-.calendar-icon {
-  @include user-select-mixin(none);
-
-  display: inline-flex;
-  cursor: pointer;
-  position: absolute;
-  right: 0;
-  top: 0;
-  width: initial;
-  padding: 0 0.3em;
-  height: 100%;
-  justify-content: center;
-  align-items: center;
-  font-size: 1em;
-  margin: auto 0;
-  color: get-color($openk-default-palette, 800);
-}
-
-.calendar-icon-open {
-  color: get-color($openk-info-palette, A300);
-}
-
-.calendar-control-input {
-  width: 100%;
-  height: 100%;
-  font-size: 1em;
-  padding-right: 1.5em;
-}
-
-.calendar-control-input-opened-top {
-  @include rounded-border-mixin($top-right: 0);
-}
-
-.calendar-control-input-opened-bottom {
-  @include rounded-border-mixin($bottom-right: 0);
-}
-
-.calendar-control-day {
-  @include rounded-border-mixin();
-
-  display: inline-flex;
-  justify-content: center;
-  align-items: center;
-  width: 100%;
-  height: 100%;
-  padding: 0.5em;
-  cursor: pointer;
-  border: 1px solid transparent;
-  transition: all 150ms ease-in-out;
-
-  &.calendar-control-day-today {
-    background: $openk-background;
-    border-color: $openk-form-border;
-  }
-
-  &:hover:not(.calendar-control-day-disabled),
-  &:focus:not(.calendar-control-day-disabled) {
-    background: $openk-background-highlight;
-    border-color: $openk-form-border;
-  }
-
-  &:active:not(.calendar-control-day-disabled),
-  &.calendar-control-day-selected:not(.calendar-control-day-disabled),
-  &.calendar-control-day-selected {
-    border: 1px solid get-color($openk-info-palette);
-    background-color: get-color($openk-info-palette);
-    color: get-color($openk-info-palette, 500, contrast);
-  }
-
-}
-
-.calendar-control-day-disabled {
-  cursor: unset;
-}
diff --git a/src/app/shared/date-control/component/date-control.component.spec.ts b/src/app/shared/date-control/component/date-control.component.spec.ts
deleted file mode 100644
index 1d71db4..0000000
--- a/src/app/shared/date-control/component/date-control.component.spec.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, ViewChild} from "@angular/core";
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {FormsModule, NgForm, NgModel} from "@angular/forms";
-import {MatIcon} from "@angular/material/icon";
-import {By} from "@angular/platform-browser";
-import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
-import {Calendar} from "primeng/calendar";
-import {EKeyboardKeys} from "../../../util/events";
-import {DateControlModule} from "../date-control.module";
-import {DateControlComponent} from "./date-control.component";
-
-describe("DateControlComponent", () => {
-    let component: DateControlSpecComponent;
-    let fixture: ComponentFixture<DateControlSpecComponent>;
-    let textInput: HTMLInputElement;
-    let matIcon: HTMLElement;
-
-    function getCalendar(): Calendar {
-        try {
-            const componentInstance = fixture.debugElement.query(By.directive(Calendar)).componentInstance;
-            return componentInstance instanceof Calendar ? componentInstance : undefined;
-        } catch (e) {
-            return;
-        }
-    }
-
-    function getCalendarDayElement(index: number): HTMLElement {
-        try {
-            return fixture?.debugElement == null ? [] : fixture.debugElement
-                .queryAll(By.css(".ui-state-default:not(.ui-state-disabled)"))
-                .map((debugElement) => debugElement.nativeElement)[index];
-        } catch (e) {
-            return undefined;
-        }
-    }
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [
-                DateControlSpecComponent
-            ],
-            imports: [
-                DateControlModule,
-                BrowserAnimationsModule,
-                FormsModule
-            ]
-        }).compileComponents();
-    }));
-
-    beforeEach(async () => {
-        fixture = TestBed.createComponent(DateControlSpecComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-        await fixture.whenStable();
-        textInput = fixture.debugElement.query(By.css("input")).nativeElement;
-        matIcon = fixture.debugElement.query(By.directive(MatIcon)).nativeElement;
-    });
-
-    it("should register to Angular forms", async () => {
-        expect(component).toBeDefined();
-        expect(component?.ngForm?.value).toBeDefined();
-        expect(component.ngForm.value.date).toBe("2020-05-01");
-    });
-
-    it("should update value via text input", async () => {
-        expect(textInput?.value).toBe("01.05.2020");
-
-        textInput.value = "02.05.2020";
-        textInput.dispatchEvent(new InputEvent("input"));
-        fixture.detectChanges();
-        expect(component.value).toBe("2020-05-02");
-        expect(component.ngForm.value.date).toBe("2020-05-02");
-    });
-
-    it("should handle faulty user input", async () => {
-        expect(textInput?.value).toBe("01.05.2020");
-
-        textInput.value = "19.05.2020abcdef";
-        textInput.dispatchEvent(new InputEvent("input"));
-        fixture.detectChanges();
-
-        expect(component.value).toBe("2020-05-19");
-        expect(component.ngForm.value.date).toBe("2020-05-19");
-        expect(textInput.value).toBe("19.05.2020abcdef");
-
-        textInput.dispatchEvent(new Event("blur"));
-        fixture.detectChanges();
-
-        expect(component.value).toBe("2020-05-19");
-        expect(component.ngForm.value.date).toBe("2020-05-19");
-        expect(textInput.value).toBe("19.05.2020");
-    });
-
-    it("should update value via calendar", async () => {
-        expect(component.value).toBe("2020-05-01");
-
-        component.dateControlComponent.toggle(true);
-        await fixture.whenStable();
-        fixture.detectChanges();
-
-        const dayElement = getCalendarDayElement(19);
-        dayElement.dispatchEvent(new Event("click"));
-        expect(component.value).toBe("2020-05-20");
-        expect(component.ngForm.value.date).toBe("2020-05-20");
-        await fixture.whenStable();
-        fixture.detectChanges();
-
-        expect(getCalendar()).not.toBeDefined();
-    });
-
-    it("should toggle overlay", async () => {
-        expect(getCalendar()).not.toBeDefined();
-
-        textInput.dispatchEvent(new Event("mousedown"));
-        expect(getCalendar()).toBeDefined();
-
-        textInput.dispatchEvent(new Event("mousedown"));
-        expect(getCalendar()).toBeDefined();
-
-        document.dispatchEvent(new Event("click"));
-        expect(getCalendar()).not.toBeDefined();
-
-        matIcon.dispatchEvent(new Event("mousedown"));
-        expect(getCalendar()).toBeDefined();
-
-        matIcon.dispatchEvent(new Event("mousedown"));
-        expect(getCalendar()).not.toBeDefined();
-    });
-
-    it("should close overlay when tabbing from the text input", async () => {
-        textInput.dispatchEvent(new Event("mousedown"));
-        fixture.detectChanges();
-        await fixture.whenStable();
-        expect(getCalendar()).toBeDefined();
-
-        textInput.dispatchEvent(new KeyboardEvent("keydown", {key: EKeyboardKeys.TAB}));
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(getCalendar()).not.toBeDefined();
-    });
-
-    it("should close overlay when tabbing from the calendar", async () => {
-        component.dateControlComponent.toggle(true);
-        fixture.detectChanges();
-        await fixture.whenStable();
-        expect(getCalendar()).toBeDefined();
-
-        getCalendar().el.nativeElement.dispatchEvent(new KeyboardEvent("keydown", {key: EKeyboardKeys.TAB}));
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(getCalendar()).not.toBeDefined();
-    });
-
-    it("should allow no interactions when disabled", async () => {
-        component.dateControlComponent.toggle(true);
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(getCalendar()).toBeDefined();
-
-        component.ngModel.control.disable();
-        fixture.detectChanges();
-        await fixture.whenStable();
-        expect(textInput.disabled).toBeTrue();
-        expect(getCalendar()).not.toBeDefined();
-
-        textInput.dispatchEvent(new Event("click"));
-        fixture.detectChanges();
-        await fixture.whenStable();
-        expect(textInput.disabled).toBeTrue();
-        expect(getCalendar()).not.toBeDefined();
-    });
-
-});
-
-@Component({
-    selector: "app-date-control-spec",
-    template: `
-        <form>
-            <app-date-control [(appValue)]="value" [ngModel]="value" name="date">
-            </app-date-control>
-        </form>
-    `
-})
-class DateControlSpecComponent {
-
-    public value = "2020-05-01";
-
-    @ViewChild(NgForm)
-    public ngForm: NgForm;
-
-    @ViewChild(NgModel)
-    public ngModel: NgModel;
-
-    @ViewChild(DateControlComponent)
-    public dateControlComponent: DateControlComponent;
-
-}
diff --git a/src/app/shared/date-control/component/date-control.component.stories.ts b/src/app/shared/date-control/component/date-control.component.stories.ts
deleted file mode 100644
index 19632fe..0000000
--- a/src/app/shared/date-control/component/date-control.component.stories.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
-import {action} from "@storybook/addon-actions";
-import {boolean, text, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {DateControlModule} from "../date-control.module";
-
-storiesOf("Shared", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({imports: [DateControlModule, BrowserAnimationsModule]}))
-    .add("DateControlComponent", () => ({
-        template: `
-            <app-date-control
-                style="margin: 1em;"
-                [appDisabled]="appDisabled"
-                [appDisplayFormat]="appDisplayFormat"
-                [appValue]="appValue"
-                [appInfo]="appInfo"
-                [appSuccess]="appSuccess"
-                [appWarning]="appWarning"
-                [appDanger]="appDanger"
-                (appValueChange)="appValueChange($event)">
-            </app-date-control>
-        `,
-        props: {
-            appDisabled: boolean("appDisabled", false),
-            appDisplayFormat: text("appDisplayFormat", "DD.MM.YYYY"),
-            appValue: text("appValue", "2020-05-19"),
-            appInfo: boolean("appInfo", false),
-            appSuccess: boolean("appSuccess", false),
-            appWarning: boolean("appWarning", false),
-            appDanger: boolean("appDanger", false),
-            appValueChange: action("appValueChange")
-        }
-    }));
-
-
diff --git a/src/app/shared/date-control/component/date-control.component.ts b/src/app/shared/date-control/component/date-control.component.ts
deleted file mode 100644
index effabd0..0000000
--- a/src/app/shared/date-control/component/date-control.component.ts
+++ /dev/null
@@ -1,196 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {ConnectedPosition} from "@angular/cdk/overlay";
-import {DOCUMENT} from "@angular/common";
-import {Component, ElementRef, EventEmitter, forwardRef, Inject, Input, Output, ViewChild} from "@angular/core";
-import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms";
-import {MomentInput} from "moment";
-import {timer} from "rxjs";
-import {momentFormatDisplayNumeric, momentFormatInternal, parseMomentToDate, parseMomentToString} from "../../../util";
-import {DropDownDirective} from "../../drop-down";
-
-@Component({
-    selector: "app-date-control",
-    templateUrl: "./date-control.component.html",
-    styleUrls: ["./date-control.component.scss"],
-    providers: [
-        {
-            provide: NG_VALUE_ACCESSOR,
-            useExisting: forwardRef(() => DateControlComponent),
-            multi: true
-        }
-    ]
-})
-export class DateControlComponent implements ControlValueAccessor {
-
-    private static id = 0;
-
-    @Input()
-    public appId = `CalendarControlComponent${DateControlComponent.id++}`;
-
-    @Input()
-    public appDisabled = false;
-
-    @Input()
-    public appInfo = false;
-
-    @Input()
-    public appSuccess = false;
-
-    @Input()
-    public appWarning = false;
-
-    @Input()
-    public appDanger = false;
-
-    @Output()
-    public appValueChange = new EventEmitter<string>();
-
-    @Input()
-    public appInternalFormat = momentFormatInternal;
-
-    @Input()
-    public appDisplayFormat = momentFormatDisplayNumeric;
-
-    public value: Date = new Date();
-
-    public displayedValue: Date = this.value;
-
-    public readonly connectedPositions: ConnectedPosition[] = [
-        {
-            originX: "start",
-            originY: "bottom",
-            overlayX: "start",
-            overlayY: "top",
-            offsetX: 4,
-            offsetY: -1,
-            panelClass: "bottom"
-        },
-        {
-            originX: "start",
-            originY: "top",
-            overlayX: "start",
-            overlayY: "bottom",
-            offsetY: 1,
-            offsetX: 4,
-            panelClass: "top"
-        },
-        {
-            originX: "end",
-            originY: "top",
-            overlayX: "start",
-            overlayY: "top",
-            panelClass: "right"
-        },
-        {
-            originX: "start",
-            originY: "top",
-            overlayX: "end",
-            overlayY: "top",
-            panelClass: "left"
-        }
-    ];
-
-    @ViewChild("inputElement")
-    private readonly inputElement: ElementRef<HTMLInputElement>;
-
-    @ViewChild(DropDownDirective)
-    private dropDownDirective: DropDownDirective;
-
-    public constructor(@Inject(DOCUMENT) private readonly document: Document) {
-
-    }
-
-    @Input()
-    public set appValue(value: MomentInput) {
-        this.writeValue(value);
-        this.onInputBlur();
-    }
-
-    public onChange = (_: string) => null;
-
-    public onTouch = () => null;
-
-    public onKeyDown(event: KeyboardEvent, tabToInput?: boolean) {
-        if (event.key === "Tab") {
-            this.toggle(false);
-            if (tabToInput) {
-                this.dropDownDirective.nativeElement.focus();
-            }
-        }
-    }
-
-    public onCalendarChange(event: any) {
-        this.writeValue(event, true);
-        this.onInputBlur();
-        this.inputElement.nativeElement.focus();
-        timer(0).toPromise().then(() => this.toggle(false));
-    }
-
-    public onInputChange(value: string) {
-        const date = parseMomentToDate(value, this.appDisplayFormat);
-        if (date != null) {
-            this.writeValue(date, true, true);
-        }
-    }
-
-    public onInputBlur(inputElement?: HTMLInputElement) {
-        this.displayedValue = this.value;
-        if (inputElement != null) {
-            inputElement.value = parseMomentToString(this.value, this.appInternalFormat, this.appDisplayFormat);
-        }
-    }
-
-    public onMouseDown(element: HTMLElement) {
-        if (this.document?.activeElement !== element) {
-            // Toggle calendar only if the element is not focused:
-            this.toggle(true);
-        }
-    }
-
-    public toggle(openOrClose?: boolean) {
-        this.dropDownDirective.toggle(openOrClose);
-    }
-
-    public writeValue(obj: any, emit?: boolean, doNotChangeDisplayedValue?: boolean): void {
-        this.value = parseMomentToDate(obj, this.appInternalFormat, new Date());
-        if (!doNotChangeDisplayedValue) {
-            this.displayedValue = this.value;
-        }
-
-        const internalValue = parseMomentToString(this.value, this.appInternalFormat, this.appInternalFormat);
-
-        if (obj !== internalValue || emit) {
-            this.onChange(internalValue);
-        }
-
-        if (emit) {
-            this.appValueChange.emit(internalValue);
-            this.onTouch();
-        }
-    }
-
-    public setDisabledState(isDisabled: boolean): void {
-        this.appDisabled = isDisabled;
-    }
-
-    public registerOnChange(fn: any): void {
-        this.onChange = fn;
-    }
-
-    public registerOnTouched(fn: any): void {
-        this.onTouch = fn;
-    }
-
-}
diff --git a/src/app/shared/date-control/date-control.module.ts b/src/app/shared/date-control/date-control.module.ts
deleted file mode 100644
index bb45afb..0000000
--- a/src/app/shared/date-control/date-control.module.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {FormsModule} from "@angular/forms";
-import {MatIconModule} from "@angular/material/icon";
-import {CalendarModule} from "primeng/calendar";
-import {DropDownModule} from "../drop-down";
-import {DateControlComponent} from "./component/date-control.component";
-import {MomentPipe} from "./pipe/moment.pipe";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        FormsModule,
-        CalendarModule,
-        DropDownModule,
-        MatIconModule
-    ],
-    declarations: [
-        DateControlComponent,
-        MomentPipe
-    ],
-    exports: [
-        DateControlComponent,
-        MomentPipe
-    ]
-})
-export class DateControlModule {
-
-}
diff --git a/src/app/shared/date-control/index.ts b/src/app/shared/date-control/index.ts
deleted file mode 100644
index 27e3447..0000000
--- a/src/app/shared/date-control/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./component/date-control.component";
-export * from "./date-control.module";
diff --git a/src/app/shared/date-control/pipe/moment.pipe.spec.ts b/src/app/shared/date-control/pipe/moment.pipe.spec.ts
deleted file mode 100644
index 1203067..0000000
--- a/src/app/shared/date-control/pipe/moment.pipe.spec.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {MomentPipe} from "./moment.pipe";
-import {Component} from "@angular/core";
-import {ComponentFixture, TestBed} from "@angular/core/testing";
-
-describe("MomentPipe", () => {
-
-    const pipe = new MomentPipe();
-    const date = new Date(2020, 5, 14, 11, 11, 11, 11);
-
-    describe("pipe", () => {
-
-        @Component({
-            template: `{{(displayDate | appMomentPipe: format).format(displayFormat)}}`
-        })
-        class TestComponent {
-            displayDate = date;
-            format;
-            displayFormat;
-        }
-        let component: TestComponent;
-        let fixture: ComponentFixture<TestComponent>;
-        let el: HTMLElement;
-
-        beforeEach(async () => {
-            await TestBed.configureTestingModule({
-                declarations: [
-                    MomentPipe,
-                    TestComponent
-                ]
-            }).compileComponents();
-            fixture = TestBed.createComponent(TestComponent);
-            component = fixture.componentInstance;
-            el = fixture.nativeElement;
-            fixture.detectChanges();
-        });
-
-        it("should convert the input date to default moment format", () => {
-            expect(el.textContent).toEqual("2020-06-14T11:11:11+02:00");
-        });
-
-        it("should convert the input date to the given display format", () => {
-            component.displayFormat = "DD.MM.YYYY";
-            fixture.detectChanges();
-            expect(el.textContent).toEqual("14.06.2020");
-        });
-    });
-
-    describe("transform", () => {
-
-        it("should convert the input to moment", () => {
-            const returnMoment = pipe.transform(date);
-            const returnObj = returnMoment.toObject();
-            expect(returnObj).toBeTruthy();
-            expect(date.getFullYear()).toEqual(returnObj.years);
-            expect(returnMoment.format()).toEqual("2020-06-14T11:11:11+02:00");
-        });
-    });
-});
-
diff --git a/src/app/shared/default-html/default-html-controls.stories.ts b/src/app/shared/default-html/default-html-controls.stories.ts
deleted file mode 100644
index 7ca3665..0000000
--- a/src/app/shared/default-html/default-html-controls.stories.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {MatIconModule} from "@angular/material/icon";
-import {boolean, number, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-
-const templateInput = `
-    <div style="display: flex; flex-flow: column; padding: 1em; justify-content: center; box-sizing: border-box;">
-      <input type="text" value="Default" style="margin: 0.5em; box-sizing: border-box;"
-             *ngFor="let class of [null, 'primary', 'info', 'success', 'warning', 'danger']"
-             class="openk-input"
-             [ngClass]="class == null ? null : 'openk-' + class"
-             [disabled]="disabled"
-             [value]="class == null ? 'default' : class"
-             [style.max-width]="maxWidth + 'em'">
-    </div>
-`;
-
-const templateButton = `
-    <div style="display: flex; flex-flow: row wrap; padding: 1em; box-sizing: border-box;">
-      <button class="openk-button"
-        style="margin: 0.5em;"
-        *ngFor="let class of [null, 'primary', 'info', 'success', 'warning', 'danger']"
-        [disabled]="disabled"
-        [class.openk-button-rounded]="rounded"
-        [ngClass]=" class == null ? null : 'openk-' + class">
-
-        <mat-icon *ngIf="rounded || withIcon">view_list</mat-icon>
-        <ng-container *ngIf="!rounded"> {{class == null ? 'default' : class}} </ng-container>
-      </button>
-    </div>
-`;
-
-storiesOf("Shared / Default HTML Controls", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({imports: [CommonModule, MatIconModule]}))
-    .add("Text Field", () => ({
-        template: templateInput,
-        props: {
-            disabled: boolean("Disabled", false),
-            maxWidth: number("Width", 20, {range: true, min: 0, max: 20, step: 1})
-        }
-    }))
-    .add("Buttons", () => ({
-        template: templateButton,
-        props: {
-            disabled: boolean("Disabled", false),
-            withIcon: boolean("With Icon", true),
-            rounded: boolean("Rounded", false)
-        }
-    }));
diff --git a/src/app/shared/drop-down/directives/drop-down.directive.spec.ts b/src/app/shared/drop-down/directives/drop-down.directive.spec.ts
deleted file mode 100644
index 32cef13..0000000
--- a/src/app/shared/drop-down/directives/drop-down.directive.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {DropDownDirective} from "./drop-down.directive";
-
-describe("DropDownDirective", () => {
-    it("should create an instance", () => {
-        const directive = new DropDownDirective(null, null, null, document, window);
-        expect(directive).toBeTruthy();
-    });
-});
diff --git a/src/app/shared/drop-down/directives/drop-down.directive.ts b/src/app/shared/drop-down/directives/drop-down.directive.ts
deleted file mode 100644
index 5542c87..0000000
--- a/src/app/shared/drop-down/directives/drop-down.directive.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Overlay, OverlayConfig, OverlayRef, PositionStrategy} from "@angular/cdk/overlay";
-import {TemplatePortal} from "@angular/cdk/portal";
-import {DOCUMENT} from "@angular/common";
-import {Directive, ElementRef, Inject, Input, OnDestroy, TemplateRef, ViewContainerRef} from "@angular/core";
-import {fromEvent, merge, Subscription, timer} from "rxjs";
-import {take} from "rxjs/operators";
-import {WINDOW} from "../../../core/dom/window.token";
-
-@Directive({
-    selector: "[appDropDown]",
-    exportAs: "appDropDown"
-})
-export class DropDownDirective<C> implements OnDestroy {
-
-    @Input()
-    public appDropDown: TemplateRef<C>;
-
-    public isOpen = false;
-
-    private overlayRef: OverlayRef;
-
-    private subscriptionToClose: Subscription;
-
-    constructor(
-        private readonly elementRef: ElementRef<HTMLElement>,
-        private readonly viewContainerRef: ViewContainerRef,
-        private readonly overlay: Overlay,
-        @Inject(DOCUMENT) private readonly document: Document,
-        @Inject(WINDOW) private readonly window: Window
-    ) {
-
-    }
-
-    public ngOnDestroy(): void {
-        this.close();
-    }
-
-    public toggle() {
-        return this.overlayRef == null ? this.open() : this.close();
-    }
-
-    public async open() {
-        await timer(0).toPromise();
-
-        if (this.appDropDown == null) {
-            return;
-        }
-
-        if (this.overlayRef == null) {
-            this.overlayRef = this.overlay.create(this.getOverlayConfig());
-            const portal = new TemplatePortal(this.appDropDown, this.viewContainerRef);
-            this.overlayRef.attach(portal);
-            this.overlayRef.detachments().pipe(take(1)).subscribe(() => this.close(), () => this.close());
-            this.isOpen = true;
-            this.subscribeToClose();
-        }
-    }
-
-    public close() {
-        if (this.overlayRef != null) {
-            this.unsubscribeToClose();
-            this.overlayRef.detach();
-            this.overlayRef = null;
-            this.isOpen = false;
-        }
-    }
-
-    private subscribeToClose() {
-        this.unsubscribeToClose();
-        if (this.overlayRef != null) {
-            this.subscriptionToClose = merge(
-                this.overlayRef.detachments(),
-                fromEvent(this.document, "click"),
-                fromEvent(this.window, "resize"),
-                fromEvent(this.elementRef.nativeElement, "resize")
-            ).subscribe(() => this.close());
-        }
-    }
-
-    private unsubscribeToClose() {
-        if (this.subscriptionToClose != null) {
-            this.subscriptionToClose.unsubscribe();
-        }
-    }
-
-    private getOverlayConfig(): OverlayConfig {
-        const origin = this.elementRef.nativeElement;
-        const rect = origin.getBoundingClientRect();
-        return new OverlayConfig({
-            width: rect.width,
-            positionStrategy: this.getOverlayPosition(origin),
-            scrollStrategy: this.overlay.scrollStrategies.close()
-        });
-    }
-
-    private getOverlayPosition(origin: HTMLElement): PositionStrategy {
-        return this.overlay.position()
-            .flexibleConnectedTo(origin)
-            .withPositions([{
-                originX: "center",
-                originY: "bottom",
-                overlayX: "center",
-                overlayY: "top"
-            }])
-            .withFlexibleDimensions(false)
-            .withPush(false);
-    }
-
-}
diff --git a/src/app/shared/drop-down/drop-down.directive.spec.ts b/src/app/shared/drop-down/drop-down.directive.spec.ts
deleted file mode 100644
index 32cef13..0000000
--- a/src/app/shared/drop-down/drop-down.directive.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {DropDownDirective} from "./drop-down.directive";
-
-describe("DropDownDirective", () => {
-    it("should create an instance", () => {
-        const directive = new DropDownDirective(null, null, null, document, window);
-        expect(directive).toBeTruthy();
-    });
-});
diff --git a/src/app/shared/drop-down/drop-down.directive.ts b/src/app/shared/drop-down/drop-down.directive.ts
deleted file mode 100644
index c69c229..0000000
--- a/src/app/shared/drop-down/drop-down.directive.ts
+++ /dev/null
@@ -1,207 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {ConnectedPosition, Overlay, OverlayConfig, OverlayRef, PositionStrategy} from "@angular/cdk/overlay";
-import {TemplatePortal} from "@angular/cdk/portal";
-import {DOCUMENT} from "@angular/common";
-import {Directive, ElementRef, EventEmitter, Inject, Input, OnDestroy, Output, TemplateRef, ViewContainerRef} from "@angular/core";
-import {fromEvent, merge, Subscription, timer} from "rxjs";
-import {filter, take} from "rxjs/operators";
-import {WINDOW} from "../../core";
-import {EKeyboardKeys} from "../../util/events";
-
-@Directive({
-    selector: "[appDropDown]",
-    exportAs: "appDropDown"
-})
-export class DropDownDirective<C = any> implements OnDestroy {
-
-    @Input()
-    public appConnectedPositions: ConnectedPosition[] = [
-        {
-            originX: "center",
-            originY: "bottom",
-            overlayX: "center",
-            overlayY: "top",
-            panelClass: "bottom"
-        },
-        {
-            originX: "center",
-            originY: "top",
-            overlayX: "center",
-            overlayY: "bottom",
-            panelClass: "top"
-        },
-        {
-            originX: "end",
-            originY: "top",
-            overlayX: "start",
-            overlayY: "top",
-            panelClass: "right"
-        },
-        {
-            originX: "start",
-            originY: "top",
-            overlayX: "end",
-            overlayY: "top",
-            panelClass: "left"
-        }
-    ];
-
-    @Input()
-    public appPreventAutomaticClose = false;
-
-    @Input()
-    public appDropDown: TemplateRef<C>;
-
-    @Output()
-    public readonly appOpen = new EventEmitter<Event | null>();
-
-    @Output()
-    public readonly appClose = new EventEmitter<Event | null>();
-
-    public isOpen = false;
-
-    public position: ConnectedPosition;
-
-    private disabled = false;
-
-    private overlayRef: OverlayRef;
-
-    private subscriptionToClose: Subscription;
-
-    constructor(
-        private readonly elementRef: ElementRef<HTMLElement>,
-        private readonly viewContainerRef: ViewContainerRef,
-        private readonly overlay: Overlay,
-        @Inject(DOCUMENT) private readonly document: Document,
-        @Inject(WINDOW) private readonly window: Window
-    ) {
-
-    }
-
-    public ngOnDestroy(): void {
-        this.close();
-    }
-
-    @Input()
-    public set appDisabled(value: boolean) {
-        this.disabled = value;
-        if (value) {
-            timer(0).toPromise().then(() => this.close());
-        }
-    }
-
-    public get nativeElement(): HTMLElement {
-        return this.elementRef?.nativeElement;
-    }
-
-    public get overlayElement(): HTMLElement {
-        return this.overlayRef?.overlayElement;
-    }
-
-    public isElementContainedIn(element?: Element | any): boolean {
-        return this.isElementContainedInOverlay(element) || this.isElementContainedInOrigin(element);
-    }
-
-    public isElementContainedInOrigin(element?: Element | any): boolean {
-        return this.nativeElement?.contains(element);
-    }
-
-    public isElementContainedInOverlay(element?: Element | any): boolean {
-        return this.overlayElement?.contains(element);
-    }
-
-    public toggle(openOrClose?: boolean) {
-        openOrClose = openOrClose == null ? this.overlayRef == null : openOrClose;
-        return openOrClose ? this.open() : this.close();
-    }
-
-    public async open() {
-        if (!this.disabled && this.overlayRef == null && this.appDropDown != null) {
-            this.overlayRef = this.overlay.create(this.getOverlayConfig());
-            const portal = new TemplatePortal(this.appDropDown, this.viewContainerRef);
-            this.overlayRef.attach(portal);
-            this.overlayRef.detachments().pipe(take(1)).subscribe(() => this.close());
-            this.subscribeToClose();
-            this.isOpen = this.overlayRef != null;
-            this.appOpen.emit(null);
-        }
-    }
-
-    public async close(event?: Event) {
-        if (this.overlayRef != null) {
-            this.unsubscribeToClose();
-            this.overlayRef.dispose();
-            this.overlayRef = null;
-            this.isOpen = false;
-            this.appClose.emit(event);
-        }
-    }
-
-    public async updatePosition() {
-        if (this.overlayRef != null) {
-            this.overlayRef.updatePosition();
-        }
-    }
-
-    private subscribeToClose() {
-        this.unsubscribeToClose();
-        if (this.overlayRef != null) {
-            this.subscriptionToClose = merge<Event>(
-                fromEvent(this.document, "click").pipe(
-                    filter((event) => !this.isElementContainedIn(event?.target))
-                ),
-                fromEvent(this.window, "resize"),
-                fromEvent(this.nativeElement, "resize"),
-                fromEvent<KeyboardEvent>(this.document, "keydown").pipe(
-                    filter((event) => event?.key === EKeyboardKeys.ESCAPE)
-                )
-            ).subscribe((event: Event) => this.close(event), (error) => console.error(error));
-        }
-    }
-
-    private unsubscribeToClose() {
-        if (this.subscriptionToClose != null) {
-            this.subscriptionToClose.unsubscribe();
-        }
-    }
-
-    private getOverlayConfig(): OverlayConfig {
-        const origin = this.elementRef.nativeElement;
-        const rect = origin.getBoundingClientRect();
-        return new OverlayConfig({
-            width: rect.width,
-            positionStrategy: this.getPositionStrategy(origin),
-            scrollStrategy: this.overlay.scrollStrategies.close()
-        });
-    }
-
-    private getPositionStrategy(origin: HTMLElement): PositionStrategy {
-        const result = this.overlay.position()
-            .flexibleConnectedTo(origin)
-            .withPositions(this.appConnectedPositions)
-            .withFlexibleDimensions(true)
-            .withViewportMargin(8)
-            .withPush(true);
-
-        result.positionChanges.subscribe({
-            next: (event) => this.position = event?.connectionPair,
-            error: () => this.position = null,
-            complete: () => this.position = null
-        });
-
-        return result;
-    }
-
-}
diff --git a/src/app/shared/drop-down/index.ts b/src/app/shared/drop-down/index.ts
deleted file mode 100644
index 1391fda..0000000
--- a/src/app/shared/drop-down/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./drop-down.directive";
-export * from "./drop-down.module";
diff --git a/src/app/shared/file-drop/component/file-drop.component.html b/src/app/shared/file-drop/component/file-drop.component.html
deleted file mode 100644
index 6f2c134..0000000
--- a/src/app/shared/file-drop/component/file-drop.component.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<span (dragover)="onDragOver($event)"
-      *ngFor="let file of appValue; let index = index;"
-      class="attachments-file">
-
-  <button (click)="onDelete(index)"
-          [disabled]="appDisabled"
-          class="openk-button openk-button-rounded"
-          type="button">
-    <mat-icon>clear</mat-icon>
-  </button>
-
-  {{file?.name}}
-
-</span>
-
-<input #inputElement
-       (input)="onInput(inputElement.files)"
-       [disabled]="appDisabled"
-       id="new-statement-attachments" multiple
-       style="display: none;"
-       type="file">
diff --git a/src/app/shared/file-drop/component/file-drop.component.scss b/src/app/shared/file-drop/component/file-drop.component.scss
deleted file mode 100644
index 1c3ce95..0000000
--- a/src/app/shared/file-drop/component/file-drop.component.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "openk.styles";
-
-:host {
-  @include rounded-border-mixin();
-
-  background: get-color($openk-default-palette);
-  display: inline-flex;
-  width: 20em;
-  border: 1px dashed get-color($openk-default-palette, A700);
-  flex-flow: column;
-  align-items: flex-start;
-  box-sizing: border-box;
-
-  min-height: 5em;
-  padding: 0.4em;
-  font-size: 0.875em;
-  font-weight: 400;
-  line-height: 1;
-  vertical-align: middle;
-  text-decoration: none;
-}
-
-.attachments-file {
-  display: inline-flex;
-  width: 100%;
-  align-items: center;
-  line-height: 1.25;
-
-  .openk-button {
-    font-size: 0.66em;
-    border: 0;
-    margin-right: 0.25em;
-  }
-}
diff --git a/src/app/shared/file-drop/component/file-drop.component.spec.ts b/src/app/shared/file-drop/component/file-drop.component.spec.ts
deleted file mode 100644
index 5bb0cb3..0000000
--- a/src/app/shared/file-drop/component/file-drop.component.spec.ts
+++ /dev/null
@@ -1,185 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {FileDropComponent} from "./file-drop.component";
-
-describe("FileDropComponent", () => {
-    let component: FileDropComponent;
-    let fixture: ComponentFixture<FileDropComponent>;
-
-    let file: File;
-    let anotherFile: File;
-    let thirdFile: File;
-    let fakeFileList: FakeFileList;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [FileDropComponent]
-        }).compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(FileDropComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    beforeEach(() => {
-        file = new File(["Some", "File"], "Some File");
-        anotherFile = new File(["Another", "File"], "Another File");
-        thirdFile = new File(["Third", "File"], "Third File");
-        fakeFileList = new FakeFileList([file]);
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-
-    describe("onInput", () => {
-        it("should add the files of the given filelist to the appValue array", () => {
-            expect(component.appValue).toEqual(undefined);
-            component.appDisabled = false;
-            component.onInput(fakeFileList as FileList);
-            expect(component.appValue).toEqual([file]);
-        });
-
-        it("should not add the files to appValue when the app is disabled", () => {
-            expect(component.appValue).toEqual(undefined);
-            component.appDisabled = true;
-            component.onInput(fakeFileList as FileList);
-            expect(component.appValue).toEqual(undefined);
-        });
-
-        it("should emit the appValueChanged", () => {
-            spyOn(component.appValueChange, "emit");
-            component.appDisabled = false;
-            component.onInput(fakeFileList as FileList);
-            expect(component.appValueChange.emit).toHaveBeenCalledWith([file]);
-        });
-    });
-
-    describe("onDelete", () => {
-        it("should not delete the file when disabled or the index is invalid", () => {
-            const fileArray = [file, anotherFile, thirdFile];
-
-            component.appValue = fileArray;
-            component.appDisabled = true;
-            component.onDelete(2);
-            expect(component.appValue).toEqual(fileArray);
-
-            component.appDisabled = false;
-            component.onDelete(14);
-            expect(component.appValue).toEqual(fileArray);
-        });
-
-        it("should delete the file found at the index in appValue", () => {
-            component.appValue = [file, anotherFile, thirdFile];
-            component.appDisabled = false;
-            component.onDelete(1);
-            expect(component.appValue).toEqual([file, thirdFile]);
-            component.onDelete(1);
-            expect(component.appValue).toEqual([file]);
-        });
-
-        it("should emit the deleted file for appValueDelete and the new appValue array for appValueChange", () => {
-            spyOn(component.appValueChange, "emit");
-            spyOn(component.appValueDelete, "emit");
-            component.appValue = [file, anotherFile, thirdFile];
-            component.appDisabled = false;
-            component.onDelete(1);
-            expect(component.appValueChange.emit).toHaveBeenCalledWith([file, thirdFile]);
-            expect(component.appValueDelete.emit).toHaveBeenCalledWith(anotherFile);
-        });
-    });
-
-    describe("onDrop", () => {
-        it("should not call onInput when appDisabled is set to true", () => {
-            const dataTransfer = {
-                files: fakeFileList
-            } as unknown as DataTransfer;
-            const dragEvent = {
-                dataTransfer,
-                preventDefault() {
-                }
-            } as DragEvent;
-
-            spyOn(component, "onInput");
-            component.appDisabled = true;
-            component.onDrop(dragEvent);
-            expect(component.onInput).not.toHaveBeenCalled();
-        });
-
-        it("should call onInput with the data supplied to onDrop", () => {
-            const dataTransfer = {
-                files: fakeFileList
-            } as unknown as DataTransfer;
-            const dragEvent = {
-                dataTransfer,
-                preventDefault() {
-                }
-            } as DragEvent;
-
-            spyOn(component, "onInput");
-            component.appDisabled = false;
-            component.onDrop(dragEvent);
-            expect(component.onInput).toHaveBeenCalledWith(fakeFileList);
-        });
-
-        it("should not call onInput when there are no files in the DataTransfer-Object", () => {
-            const dataTransfer = {
-                files: null
-            } as unknown as DataTransfer;
-            const dragEvent = {
-                dataTransfer,
-                preventDefault() {
-                }
-            } as DragEvent;
-
-            spyOn(component, "onInput");
-            component.appDisabled = false;
-            component.onDrop(dragEvent);
-            expect(component.onInput).not.toHaveBeenCalled();
-        });
-    });
-
-    describe("onDragOver", () => {
-        it("should call preventDefault", () => {
-            const dragEvent = {
-                preventDefault() {
-                }
-            } as DragEvent;
-
-            spyOn(dragEvent, "preventDefault");
-            component.appDisabled = false;
-            component.onDragOver(dragEvent);
-            expect(dragEvent.preventDefault).toHaveBeenCalled();
-        });
-    });
-});
-
-class FakeFileList implements FileList {
-    public data: File[];
-    public length: number;
-
-    [index: number]: File;
-
-    constructor(data: File[]) {
-        this.data = data;
-        this.length = this.data.length;
-    }
-
-    public item(idx) {
-        return this.data[idx];
-    }
-}
diff --git a/src/app/shared/file-drop/component/file-drop.component.stories.ts b/src/app/shared/file-drop/component/file-drop.component.stories.ts
deleted file mode 100644
index 3f4cdfb..0000000
--- a/src/app/shared/file-drop/component/file-drop.component.stories.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {action} from "@storybook/addon-actions";
-import {boolean, number, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {FileDropModule} from "../file-drop.module";
-
-storiesOf("Shared", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({imports: [FileDropModule]}))
-    .add("FileDropComponent", () => ({
-        template: `
-            <app-file-drop
-                #fileDrop
-                style="margin: 1em;"
-                [appDisabled]="appDisabled"
-                (appValueChange)="appValueChange($event)"
-                (appValueDelete)="appValueDelete($event)"
-                >
-            </app-file-drop>
-            <div>
-                <button (click)="fileDrop.openDialog();" class="openk-button" style="margin: 0 1em;">
-                    Open Dialog
-                </button>
-            </div>
-        `,
-        props: {
-            getFiles: (length) => getFiles(length),
-            appDisabled: boolean("appDisabled", false),
-            numberOfFiles: number("Number of files", 2, {min: 0, max: 30, step: 1, range: true}),
-            appValueChange: action("appValueChange"),
-            appValueDelete: action("appValueDelete")
-        }
-    }));
-
-function getFiles(length): File[] {
-    return Array(length)
-        .fill(0)
-        .map((_, id) => {
-            const fileBits = Array((id + 1) * 1024)
-                .fill(0)
-                .map(() => "" + Math.floor(Math.random() * 8));
-            return new File(fileBits, `New File (${id}).txt`);
-        });
-}
diff --git a/src/app/shared/file-drop/component/file-drop.component.ts b/src/app/shared/file-drop/component/file-drop.component.ts
deleted file mode 100644
index 8e74bc1..0000000
--- a/src/app/shared/file-drop/component/file-drop.component.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, ViewChild} from "@angular/core";
-import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms";
-
-@Component({
-    selector: "app-file-drop",
-    templateUrl: "./file-drop.component.html",
-    styleUrls: ["./file-drop.component.scss"],
-    providers: [
-        {
-            provide: NG_VALUE_ACCESSOR,
-            useExisting: forwardRef(() => FileDropComponent),
-            multi: true
-        }
-    ]
-})
-export class FileDropComponent implements ControlValueAccessor {
-
-    @HostBinding("class.no-drop")
-    @Input()
-    public appDisabled = false;
-
-    @Input()
-    public appValue: File[];
-
-    @Output()
-    public appValueChange = new EventEmitter<File[]>();
-
-    @Output()
-    public appValueDelete = new EventEmitter<File>();
-
-    @ViewChild("inputElement")
-    public inputElement: ElementRef<HTMLInputElement>;
-
-    public onChange = (_: File[]) => null;
-
-    public onTouch = () => null;
-
-    @HostListener("dragover", ["$event"])
-    public onDragOver(event: DragEvent) {
-        if (this.appDisabled) {
-            return;
-        }
-
-        try {
-            // Prevent dropped files from being opened.
-            event.preventDefault();
-        } catch (e) {
-            return;
-        }
-    }
-
-    @HostListener("drop", ["$event"])
-    public onDrop(event: DragEvent) {
-        if (this.appDisabled) {
-            return;
-        }
-
-        if (event?.dataTransfer?.files?.length > 0) {
-            event.preventDefault();
-            this.onInput(event?.dataTransfer?.files);
-        }
-    }
-
-    public openDialog(): void {
-        if (!this.appDisabled && typeof this.inputElement?.nativeElement?.click === "function") {
-            this.inputElement.nativeElement.value = "";
-            this.inputElement.nativeElement.click();
-        }
-    }
-
-    public onInput(fileList: FileList) {
-        if (this.appDisabled) {
-            return;
-        }
-
-        this.appValue = [
-            ...(Array.isArray(this.appValue) ? this.appValue : []),
-            ...fileListToFileArray(fileList)
-        ];
-        this.appValueChange.emit(this.appValue);
-        this.onChange(this.appValue);
-        this.onTouch();
-    }
-
-    public onDelete(index: number) {
-        if (this.appDisabled || this.appValue[index] == null || typeof index !== "number") {
-            return;
-        }
-        const file = this.appValue[index];
-
-        this.appValue = [
-            ...this.appValue.slice(0, index),
-            ...this.appValue.slice(index + 1)
-        ];
-
-        this.appValueDelete.emit(file);
-        this.appValueChange.emit(this.appValue);
-        this.onChange(this.appValue);
-        this.onTouch();
-    }
-
-    public writeValue(obj: File[]): void {
-        if (!Array.isArray(obj)) {
-            return;
-        }
-        this.appValue = obj.filter((file) => file instanceof File);
-    }
-
-    public registerOnChange(fn: any): void {
-        this.onChange = typeof fn === "function" ? fn : this.onChange;
-    }
-
-    public registerOnTouched(fn: any): void {
-        this.onTouch = typeof fn === "function" ? fn : this.onTouch;
-    }
-
-}
-
-function fileListToFileArray(fileList: FileList): File[] {
-    try {
-        const result: File[] = [];
-        for (let i = 0; i < fileList?.length; i++) {
-            result.push(fileList?.item(i));
-        }
-        return result;
-    } catch (e) {
-        return [];
-    }
-}
diff --git a/src/app/shared/file-drop/file-drop.module.ts b/src/app/shared/file-drop/file-drop.module.ts
deleted file mode 100644
index 89c97d4..0000000
--- a/src/app/shared/file-drop/file-drop.module.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {MatIconModule} from "@angular/material/icon";
-import {FileDropComponent} from "./component/file-drop.component";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        MatIconModule
-    ],
-    declarations: [
-        FileDropComponent
-    ],
-    exports: [
-        FileDropComponent
-    ]
-})
-export class FileDropModule {
-
-}
diff --git a/src/app/shared/file-drop/index.ts b/src/app/shared/file-drop/index.ts
deleted file mode 100644
index 222114e..0000000
--- a/src/app/shared/file-drop/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./component/file-drop.component";
-export * from "./file-drop.module";
diff --git a/src/app/shared/layout/collapsible/collapsible.component.html b/src/app/shared/layout/collapsible/collapsible.component.html
index 7f5f9df..96bf684 100644
--- a/src/app/shared/layout/collapsible/collapsible.component.html
+++ b/src/app/shared/layout/collapsible/collapsible.component.html
@@ -12,10 +12,11 @@
  -------------------------------------------------------------------------------->
 
 <div [class.collapsible-header---with-content]="appHeaderTemplateRef"
-     #header class="collapsible-header">
+     #header [class.collapsible-header---no-color]="appSimpleCollapsible" class="collapsible-header">
 
   <button (click)="toggle()"
           type="button"
+          [class.collapsible-header--toggle---small]="appSimpleCollapsible"
           class="collapsible-header--toggle cursor-pointer">
     <mat-icon [class.collapsible-header--icon---collapsed]="isCollapsed$ | async"
               class="collapsible-header--icon">
diff --git a/src/app/shared/layout/collapsible/collapsible.component.scss b/src/app/shared/layout/collapsible/collapsible.component.scss
index 28b8163..c965b09 100644
--- a/src/app/shared/layout/collapsible/collapsible.component.scss
+++ b/src/app/shared/layout/collapsible/collapsible.component.scss
@@ -39,6 +39,11 @@
   border-bottom: 1px solid $openk-form-border;
 }
 
+.collapsible-header---no-color {
+  background: 0;
+  border: 0;
+}
+
 .collapsible-header---with-content {
   padding-right: 0.25em;
 }
@@ -58,6 +63,10 @@
   padding: 0 0.25em;
 }
 
+.collapsible-header--toggle---small {
+  flex: unset;
+}
+
 .collapsible-header--icon {
   width: initial;
   height: initial;
diff --git a/src/app/shared/layout/collapsible/collapsible.component.ts b/src/app/shared/layout/collapsible/collapsible.component.ts
index beb8ccd..fdefdfd 100644
--- a/src/app/shared/layout/collapsible/collapsible.component.ts
+++ b/src/app/shared/layout/collapsible/collapsible.component.ts
@@ -53,6 +53,13 @@
     @Input()
     public appHeaderTemplateRef: TemplateRef<any>;
 
+    /**
+     * If set, shows a simpler version of the collapsible.
+     * No borders and colors will be shown for the header and will only collapse when clicking on the button, not the whole row.
+     */
+    @Input()
+    public appSimpleCollapsible = false;
+
     @Output()
     public readonly appCollapsedChange = new EventEmitter<boolean>();
 
diff --git a/src/app/shared/layout/global-class-toggle/global-class-toggle.directive.ts b/src/app/shared/layout/global-class-toggle/global-class-toggle.directive.ts
new file mode 100644
index 0000000..efb82af
--- /dev/null
+++ b/src/app/shared/layout/global-class-toggle/global-class-toggle.directive.ts
@@ -0,0 +1,58 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {DOCUMENT} from "@angular/common";
+import {Directive, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges} from "@angular/core";
+
+@Directive({
+    selector: "[appGlobalClass]"
+})
+export class GlobalClassToggleDirective implements OnInit, OnChanges, OnDestroy {
+
+    @Input()
+    public appGlobalClass: string;
+
+    public constructor(@Inject(DOCUMENT) public document: Document) {
+
+    }
+
+    public ngOnInit() {
+        this.addClass(this.appGlobalClass);
+    }
+
+    public ngOnChanges(changes: SimpleChanges) {
+        if (changes.appGlobalClass != null) {
+            const change = changes.appGlobalClass;
+            this.removeClass(change.previousValue);
+            this.addClass(change.currentValue);
+        }
+    }
+
+    public ngOnDestroy() {
+        this.removeClass(this.appGlobalClass);
+    }
+
+    public removeClass(classString: string) {
+        if (typeof classString === "string") {
+            this.document.body.classList.remove(classString);
+        }
+    }
+
+    public addClass(classString: string) {
+        if (typeof classString === "string") {
+            this.document.body.classList.add(classString);
+        }
+    }
+
+
+}
diff --git a/src/app/shared/drop-down/drop-down.module.ts b/src/app/shared/layout/global-class-toggle/global-class-toggle.module.ts
similarity index 73%
rename from src/app/shared/drop-down/drop-down.module.ts
rename to src/app/shared/layout/global-class-toggle/global-class-toggle.module.ts
index 4906dd2..d72981d 100644
--- a/src/app/shared/drop-down/drop-down.module.ts
+++ b/src/app/shared/layout/global-class-toggle/global-class-toggle.module.ts
@@ -11,21 +11,17 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {OverlayModule} from "@angular/cdk/overlay";
 import {NgModule} from "@angular/core";
-import {DropDownDirective} from "./drop-down.directive";
+import {GlobalClassToggleDirective} from "./global-class-toggle.directive";
 
 @NgModule({
     declarations: [
-        DropDownDirective
-    ],
-    imports: [
-        OverlayModule
+        GlobalClassToggleDirective
     ],
     exports: [
-        DropDownDirective
+        GlobalClassToggleDirective
     ]
 })
-export class DropDownModule {
+export class GlobalClassToggleModule {
 
 }
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/shared/layout/global-class-toggle/index.ts
similarity index 85%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/shared/layout/global-class-toggle/index.ts
index 7378646..42d6253 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/shared/layout/global-class-toggle/index.ts
@@ -11,4 +11,5 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./global-class-toggle.directive";
+export * from "./global-class-toggle.module";
diff --git a/src/app/shared/page-header/component/IPageHeaderActions.ts b/src/app/shared/page-header/component/IPageHeaderActions.ts
deleted file mode 100644
index 174a250..0000000
--- a/src/app/shared/page-header/component/IPageHeaderActions.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export interface IPageHeaderAction {
-    name: string;
-    icon: string;
-    routerLink: string;
-    queryParams?: any;
-}
diff --git a/src/app/shared/page-header/component/page-header.component.html b/src/app/shared/page-header/component/page-header.component.html
deleted file mode 100644
index e100f46..0000000
--- a/src/app/shared/page-header/component/page-header.component.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<span class="page-header-title">
-  {{appTitle | translate}}
-</span>
-
-<div *ngIf="appActions?.length > 0" class="page-header-actions">
-
-  <a *ngFor="let action of appActions"
-     [routerLink]="action?.routerLink"
-     [queryParams]="action?.queryParams"
-     class="openk-button openk-info">
-    <mat-icon>{{action?.icon}}</mat-icon>
-    {{action.name | translate}}
-  </a>
-
-</div>
diff --git a/src/app/shared/page-header/component/page-header.component.scss b/src/app/shared/page-header/component/page-header.component.scss
deleted file mode 100644
index 7ed6bcc..0000000
--- a/src/app/shared/page-header/component/page-header.component.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-:host {
-  width: 100%;
-  display: flex;
-  flex-flow: row wrap;
-  align-items: center;
-}
-
-.page-header-title {
-  margin-right: auto;
-  font-size: x-large;
-  font-weight: 600;
-}
-
-.page-header-actions {
-  display: flex;
-  flex-flow: row wrap;
-  margin-left: auto;
-  justify-content: flex-end;
-
-  .openk-button {
-    margin: 0.25em;
-  }
-}
diff --git a/src/app/shared/page-header/component/page-header.component.spec.ts b/src/app/shared/page-header/component/page-header.component.spec.ts
deleted file mode 100644
index 1c3d15a..0000000
--- a/src/app/shared/page-header/component/page-header.component.spec.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {RouterTestingModule} from "@angular/router/testing";
-import {I18nModule} from "../../../core/i18n";
-import {PageHeaderModule} from "../page-header.module";
-import {PageHeaderComponent} from "./page-header.component";
-
-describe("PageHeaderComponent", () => {
-    let component: PageHeaderComponent;
-    let fixture: ComponentFixture<PageHeaderComponent>;
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            imports: [PageHeaderModule, RouterTestingModule, I18nModule]
-        }).compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(PageHeaderComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
-});
diff --git a/src/app/shared/page-header/index.ts b/src/app/shared/page-header/index.ts
deleted file mode 100644
index 30a8ac4..0000000
--- a/src/app/shared/page-header/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./component/IPageHeaderActions";
-export * from "./page-header.module";
diff --git a/src/app/shared/page-header/page-header.module.ts b/src/app/shared/page-header/page-header.module.ts
deleted file mode 100644
index 218ea03..0000000
--- a/src/app/shared/page-header/page-header.module.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {MatIconModule} from "@angular/material/icon";
-import {RouterModule} from "@angular/router";
-import {TranslateModule} from "@ngx-translate/core";
-import {PageHeaderComponent} from "./component/page-header.component";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        TranslateModule,
-        MatIconModule,
-        RouterModule
-    ],
-    exports: [
-        PageHeaderComponent
-    ],
-    declarations: [
-        PageHeaderComponent
-    ]
-})
-export class PageHeaderModule {
-}
diff --git a/src/app/shared/pipes/find-element-in-array/find-element-in-array.pipe.spec.ts b/src/app/shared/pipes/find-element-in-array/find-element-in-array.pipe.spec.ts
new file mode 100644
index 0000000..8cafd12
--- /dev/null
+++ b/src/app/shared/pipes/find-element-in-array/find-element-in-array.pipe.spec.ts
@@ -0,0 +1,37 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {FindElementInArrayPipe} from "./find-element-in-array.pipe";
+
+describe("FindElementInArrayPipe", () => {
+
+    const pipe = new FindElementInArrayPipe();
+
+    it("should return the element if its in the array else undefined", () => {
+        const element = "element 1";
+        const array: string[] = [
+            element,
+            "element 2"
+        ];
+        let result = pipe.transform(element, array);
+        expect(result).toEqual(element);
+
+        result = pipe.transform(element, []);
+        expect(result).toEqual(undefined);
+
+        result = pipe.transform(element, ["element1", "element2"]);
+        expect(result).toEqual(undefined);
+    });
+
+});
+
diff --git a/src/app/shared/date-control/pipe/moment.pipe.ts b/src/app/shared/pipes/find-element-in-array/find-element-in-array.pipe.ts
similarity index 65%
copy from src/app/shared/date-control/pipe/moment.pipe.ts
copy to src/app/shared/pipes/find-element-in-array/find-element-in-array.pipe.ts
index 91fd692..2a47fc0 100644
--- a/src/app/shared/date-control/pipe/moment.pipe.ts
+++ b/src/app/shared/pipes/find-element-in-array/find-element-in-array.pipe.ts
@@ -12,16 +12,15 @@
  ********************************************************************************/
 
 import {Pipe, PipeTransform} from "@angular/core";
-import * as moment from "moment";
-import {Moment, MomentFormatSpecification, MomentInput} from "moment";
+import {arrayJoin} from "../../../util/store";
 
 @Pipe({
-    name: "appMomentPipe"
+    name: "findElementInArray"
 })
-export class MomentPipe implements PipeTransform {
+export class FindElementInArrayPipe<T> implements PipeTransform {
 
-    public transform(value: MomentInput, formatSpecification?: MomentFormatSpecification): Moment {
-        return moment(value, formatSpecification);
+    public transform(element: T, array: T[]): T {
+        return arrayJoin(array).find((_) => _ === element);
     }
 
 }
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/find-element-in-array/index.ts
similarity index 92%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/pipes/find-element-in-array/index.ts
index 2e6e007..4ee06d8 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/find-element-in-array/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./find-element-in-array.pipe";
diff --git a/src/app/shared/pipes/get-form-array/get-form-array.pipe.spec.ts b/src/app/shared/pipes/get-form-array/get-form-array.pipe.spec.ts
new file mode 100644
index 0000000..fb2abb2
--- /dev/null
+++ b/src/app/shared/pipes/get-form-array/get-form-array.pipe.spec.ts
@@ -0,0 +1,29 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {FormArray, FormGroup} from "@angular/forms";
+import {GetFormArrayPipe} from "./get-form-array.pipe";
+
+describe("GetFormArrayPipe", () => {
+
+    const pipe = new GetFormArrayPipe();
+
+    it("should pick a form array from a form group", () => {
+        const formArray = new FormArray([]);
+        const formGroup = new FormGroup({array: formArray});
+
+        expect(pipe.transform(formGroup, "array")).toBe(formArray);
+        expect(pipe.transform(formGroup, "noArray")).not.toBeDefined();
+        expect(pipe.transform(null, null)).not.toBeDefined();
+    });
+});
diff --git a/src/app/shared/date-control/pipe/moment.pipe.ts b/src/app/shared/pipes/get-form-array/get-form-array.pipe.ts
similarity index 65%
copy from src/app/shared/date-control/pipe/moment.pipe.ts
copy to src/app/shared/pipes/get-form-array/get-form-array.pipe.ts
index 91fd692..666c8dc 100644
--- a/src/app/shared/date-control/pipe/moment.pipe.ts
+++ b/src/app/shared/pipes/get-form-array/get-form-array.pipe.ts
@@ -12,16 +12,16 @@
  ********************************************************************************/
 
 import {Pipe, PipeTransform} from "@angular/core";
-import * as moment from "moment";
-import {Moment, MomentFormatSpecification, MomentInput} from "moment";
+import {FormArray, FormGroup} from "@angular/forms";
 
 @Pipe({
-    name: "appMomentPipe"
+    name: "getFormArray"
 })
-export class MomentPipe implements PipeTransform {
+export class GetFormArrayPipe implements PipeTransform {
 
-    public transform(value: MomentInput, formatSpecification?: MomentFormatSpecification): Moment {
-        return moment(value, formatSpecification);
+    public transform(group: FormGroup, key: string, getControls?: boolean): FormArray {
+        const control = group?.get(key);
+        return control instanceof FormArray ? control : undefined;
     }
 
 }
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/get-form-array/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/pipes/get-form-array/index.ts
index 2e6e007..9d08935 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/get-form-array/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./get-form-array.pipe";
diff --git a/src/app/shared/date-control/pipe/moment.pipe.ts b/src/app/shared/pipes/get-form-error/get-form-error.pipe.ts
similarity index 64%
copy from src/app/shared/date-control/pipe/moment.pipe.ts
copy to src/app/shared/pipes/get-form-error/get-form-error.pipe.ts
index 91fd692..b683505 100644
--- a/src/app/shared/date-control/pipe/moment.pipe.ts
+++ b/src/app/shared/pipes/get-form-error/get-form-error.pipe.ts
@@ -12,16 +12,13 @@
  ********************************************************************************/
 
 import {Pipe, PipeTransform} from "@angular/core";
-import * as moment from "moment";
-import {Moment, MomentFormatSpecification, MomentInput} from "moment";
+import {AbstractControl} from "@angular/forms";
 
-@Pipe({
-    name: "appMomentPipe"
-})
-export class MomentPipe implements PipeTransform {
+@Pipe({name: "getFormError", pure: false})
+export class GetFormErrorPipe implements PipeTransform {
 
-    public transform(value: MomentInput, formatSpecification?: MomentFormatSpecification): Moment {
-        return moment(value, formatSpecification);
+    public transform(control: AbstractControl, errorCode: string, ...path: Array<string | number>): any {
+        return control?.getError(errorCode, path);
     }
 
 }
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/get-form-error/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/pipes/get-form-error/index.ts
index 2e6e007..b11c5e7 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/get-form-error/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./get-form-error.pipe";
diff --git a/src/app/shared/date-control/pipe/moment.pipe.ts b/src/app/shared/pipes/get-form-group/get-form-group.pipe.ts
similarity index 65%
copy from src/app/shared/date-control/pipe/moment.pipe.ts
copy to src/app/shared/pipes/get-form-group/get-form-group.pipe.ts
index 91fd692..647e9ed 100644
--- a/src/app/shared/date-control/pipe/moment.pipe.ts
+++ b/src/app/shared/pipes/get-form-group/get-form-group.pipe.ts
@@ -12,16 +12,16 @@
  ********************************************************************************/
 
 import {Pipe, PipeTransform} from "@angular/core";
-import * as moment from "moment";
-import {Moment, MomentFormatSpecification, MomentInput} from "moment";
+import {FormGroup} from "@angular/forms";
 
 @Pipe({
-    name: "appMomentPipe"
+    name: "getFormGroup"
 })
-export class MomentPipe implements PipeTransform {
+export class GetFormGroupPipe implements PipeTransform {
 
-    public transform(value: MomentInput, formatSpecification?: MomentFormatSpecification): Moment {
-        return moment(value, formatSpecification);
+    public transform(group: FormGroup, key: string, getControls?: boolean): FormGroup {
+        const control = group?.get(key);
+        return control instanceof FormGroup ? control : undefined;
     }
 
 }
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/get-form-group/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/pipes/get-form-group/index.ts
index 2e6e007..cb891c8 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/get-form-group/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./get-form-group.pipe";
diff --git a/src/app/shared/pipes/index.ts b/src/app/shared/pipes/index.ts
index 7280c5e..0da4dbd 100644
--- a/src/app/shared/pipes/index.ts
+++ b/src/app/shared/pipes/index.ts
@@ -11,6 +11,12 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./obj-to-array/obj-to-array.pipe";
-export * from "./pair/pair.pipe";
+export * from "./find-element-in-array";
+export * from "./get-form-array";
+export * from "./get-form-error";
+export * from "./get-form-group";
+export * from "./obj-to-array";
+export * from "./pair";
+export * from "./strings-to-options";
+
 export * from "./shared-pipes.module";
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/obj-to-array/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/pipes/obj-to-array/index.ts
index 2e6e007..e00a6a8 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/obj-to-array/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./obj-to-array.pipe";
diff --git a/src/app/shared/pipes/objToArrayPipe/obj-to-array.pipe.spec.ts b/src/app/shared/pipes/objToArrayPipe/obj-to-array.pipe.spec.ts
deleted file mode 100644
index b303628..0000000
--- a/src/app/shared/pipes/objToArrayPipe/obj-to-array.pipe.spec.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component} from "@angular/core";
-import {ComponentFixture, TestBed} from "@angular/core/testing";
-import {ObjToArrayPipe} from "./obj-to-array.pipe";
-
-describe("ObjToArrayPipe", () => {
-
-    describe("pipe", () => {
-
-        @Component({
-            template: `<span *ngFor="let entry of obj | objToArray: keep">
-            {{entry.key}}: {{entry.value}}
-        </span>`
-        })
-        class TestComponent {
-            obj;
-            keep: boolean;
-        }
-
-        let component: TestComponent;
-        let fixture: ComponentFixture<TestComponent>;
-        let el: HTMLElement;
-
-        beforeEach(() => {
-            TestBed.configureTestingModule({
-                declarations: [
-                    ObjToArrayPipe,
-                    TestComponent
-                ]
-            });
-            fixture = TestBed.createComponent(TestComponent);
-            component = fixture.componentInstance;
-            el = fixture.nativeElement;
-            fixture.detectChanges();
-        });
-
-        it("should convert the input object to an array, removing null and undefined", () => {
-            component.obj = {
-                prop1: "propValue1",
-                prop2: 2,
-                3: 4,
-                prop4: null
-            };
-            fixture.detectChanges();
-            const listEntriesInHtml = el.querySelectorAll("span");
-            expect(listEntriesInHtml.length).toBe(Object.keys(component.obj).length - 1);
-            const spans = Array.from(el.querySelectorAll("span"));
-            expect(spans.find((span) => span.textContent.includes("3: 4"))).toBeTruthy();
-            expect(spans.find((span) => span.textContent.includes("prop1: propValue1"))).toBeTruthy();
-            expect(spans.find((span) => span.textContent.includes("prop2: 2"))).toBeTruthy();
-        });
-
-        it("should convert the input object to an array, keeping null and undefined", () => {
-            component.obj = {
-                prop1: "propValue1",
-                prop2: 2,
-                3: 4,
-                prop4: null
-            };
-            component.keep = true;
-            fixture.detectChanges();
-            const listEntriesInHtml = el.querySelectorAll("span");
-            expect(listEntriesInHtml.length).toBe(Object.keys(component.obj).length);
-            const spans = Array.from(el.querySelectorAll("span"));
-            expect(spans.find((span) => span.textContent.includes("3: 4"))).toBeTruthy();
-            expect(spans.find((span) => span.textContent.includes("prop1: propValue1"))).toBeTruthy();
-            expect(spans.find((span) => span.textContent.includes("prop2: 2"))).toBeTruthy();
-        });
-    });
-
-    describe("transform", () => {
-
-        const pipe = new ObjToArrayPipe();
-
-        it("should convert a object to an array", () => {
-            const testObject = {
-                prop1: "propValue1",
-                prop2: "propValue2",
-                prop3: 3
-            };
-            const expectedArray: Array<{ key: number | string, value: any }> = [
-                {key: "prop1", value: "propValue1"},
-                {key: "prop2", value: "propValue2"},
-                {key: "prop3", value: 3}
-            ];
-            const array = pipe.transform(testObject);
-            expect(Array.isArray(array)).toBe(true);
-            expect(array).toEqual(expectedArray);
-        });
-
-        it("should return empty array for null/undefined", () => {
-            const undefinedToArray = pipe.transform(undefined);
-            expect(Array.isArray(undefinedToArray)).toBeTrue();
-            expect(undefinedToArray.length).toBe(0);
-            const nullToArray = pipe.transform(undefined);
-            expect(Array.isArray(nullToArray)).toBeTrue();
-            expect(nullToArray.length).toBe(0);
-        });
-
-        it("should not keep null or undefined properties (default)", () => {
-            const testObject = {
-                prop1: "propValue1",
-                prop2: undefined,
-                prop3: null
-            };
-            const expectedArray: Array<{ key: number | string, value: any }> = [
-                {key: "prop1", value: "propValue1"},
-            ];
-            let array = pipe.transform(testObject);
-            expect(Array.isArray(array)).toBe(true);
-            expect(array).toEqual(expectedArray);
-            array = pipe.transform(testObject, false);
-            expect(Array.isArray(array)).toBe(true);
-            expect(array).toEqual(expectedArray);
-        });
-
-        it("should keep null or undefined properties", () => {
-            const testObject = {
-                prop1: "propValue1",
-                prop2: undefined,
-                prop3: null
-            };
-            const expectedArray: Array<{ key: number | string, value: any }> = [
-                {key: "prop1", value: "propValue1"},
-                {key: "prop2", value: undefined},
-                {key: "prop3", value: null},
-            ];
-            const array = pipe.transform(testObject, true);
-            expect(Array.isArray(array)).toBe(true);
-            expect(array).toEqual(expectedArray);
-        });
-    });
-});
diff --git a/src/app/shared/pipes/objToArrayPipe/obj-to-array.pipe.ts b/src/app/shared/pipes/objToArrayPipe/obj-to-array.pipe.ts
deleted file mode 100644
index f6bb85d..0000000
--- a/src/app/shared/pipes/objToArrayPipe/obj-to-array.pipe.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-import {Pipe, PipeTransform} from "@angular/core";
-
-
-/**
- * Converts an object to an array containing objects with key and value tags
- * example: Object{prop1: "propValue1", prop2: "propValue2"}
- * ->
- * [Object{key: 'prop1', value: 'propValue1'},
- * Object{key: 'prop2', value: 'propValue2'}]
- */
-
-@Pipe({name: "objToArray"})
-export class ObjToArrayPipe implements PipeTransform {
-
-    public transform<T extends object>(value: T, keepNullOrUndefined: boolean = false): Array<{ key: number | string, value: T }> {
-        return (typeof value !== "object" || value == null ? [] : Object.keys(value))
-            .map((key) => ({key, value: value[key]}))
-            .filter((obj) => keepNullOrUndefined || obj?.value != null);
-    }
-
-}
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/pair/index.ts
similarity index 94%
rename from src/app/shared/select/pipes/index.ts
rename to src/app/shared/pipes/pair/index.ts
index 2e6e007..7b57767 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/pair/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./pair.pipe";
diff --git a/src/app/shared/pipes/shared-pipes.module.ts b/src/app/shared/pipes/shared-pipes.module.ts
index 38ccd86..153655f 100644
--- a/src/app/shared/pipes/shared-pipes.module.ts
+++ b/src/app/shared/pipes/shared-pipes.module.ts
@@ -12,17 +12,32 @@
  ********************************************************************************/
 
 import {NgModule} from "@angular/core";
-import {ObjToArrayPipe} from "./obj-to-array/obj-to-array.pipe";
-import {PairPipe} from "./pair/pair.pipe";
+import {FindElementInArrayPipe} from "./find-element-in-array";
+import {GetFormArrayPipe} from "./get-form-array";
+import {GetFormErrorPipe} from "./get-form-error";
+import {GetFormGroupPipe} from "./get-form-group";
+import {ObjToArrayPipe} from "./obj-to-array";
+import {PairPipe} from "./pair";
+import {StringsToOptionsPipe} from "./strings-to-options";
 
 @NgModule({
     declarations: [
         ObjToArrayPipe,
-        PairPipe
+        PairPipe,
+        GetFormArrayPipe,
+        GetFormGroupPipe,
+        GetFormErrorPipe,
+        FindElementInArrayPipe,
+        StringsToOptionsPipe
     ],
     exports: [
         ObjToArrayPipe,
-        PairPipe
+        PairPipe,
+        GetFormArrayPipe,
+        GetFormGroupPipe,
+        GetFormErrorPipe,
+        FindElementInArrayPipe,
+        StringsToOptionsPipe
     ]
 })
 export class SharedPipesModule {
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/pipes/strings-to-options/index.ts
similarity index 92%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/pipes/strings-to-options/index.ts
index 2e6e007..798a978 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/pipes/strings-to-options/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./strings-to-options.pipe";
diff --git a/src/app/shared/pipes/strings-to-options/strings-to-options.pipe.spec.ts b/src/app/shared/pipes/strings-to-options/strings-to-options.pipe.spec.ts
new file mode 100644
index 0000000..6c9bddc
--- /dev/null
+++ b/src/app/shared/pipes/strings-to-options/strings-to-options.pipe.spec.ts
@@ -0,0 +1,44 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {StringsToOptionsPipe} from "./strings-to-options.pipe";
+
+describe("StringsToOptionsPipe", () => {
+
+    const pipe = new StringsToOptionsPipe();
+
+    it("should return the input strings as an array of objects with label and value being the string value", () => {
+        const array: string[] = [
+            "option 1",
+            "option 2",
+            "option 3"
+        ];
+        const result = pipe.transform(array);
+        expect(result).toEqual([
+            {value: "option 1", label: "option 1"},
+            {value: "option 2", label: "option 2"},
+            {value: "option 3", label: "option 3"}
+        ]);
+    });
+
+    it("should return an empty array for no value supplied", () => {
+
+        let result = pipe.transform(undefined);
+        expect(result).toEqual([]);
+
+        result = pipe.transform(null);
+        expect(result).toEqual([]);
+    });
+
+});
+
diff --git a/src/app/shared/date-control/pipe/moment.pipe.ts b/src/app/shared/pipes/strings-to-options/strings-to-options.pipe.ts
similarity index 65%
rename from src/app/shared/date-control/pipe/moment.pipe.ts
rename to src/app/shared/pipes/strings-to-options/strings-to-options.pipe.ts
index 91fd692..a8a8a89 100644
--- a/src/app/shared/date-control/pipe/moment.pipe.ts
+++ b/src/app/shared/pipes/strings-to-options/strings-to-options.pipe.ts
@@ -12,16 +12,16 @@
  ********************************************************************************/
 
 import {Pipe, PipeTransform} from "@angular/core";
-import * as moment from "moment";
-import {Moment, MomentFormatSpecification, MomentInput} from "moment";
+import {arrayJoin} from "../../../util/store";
+import {ISelectOption} from "../../controls/select/model";
 
 @Pipe({
-    name: "appMomentPipe"
+    name: "stringsToOptions"
 })
-export class MomentPipe implements PipeTransform {
+export class StringsToOptionsPipe implements PipeTransform {
 
-    public transform(value: MomentInput, formatSpecification?: MomentFormatSpecification): Moment {
-        return moment(value, formatSpecification);
+    public transform(optionStrings: string[]): ISelectOption[] {
+        return arrayJoin(optionStrings).map((_) => ({label: _, value: _}));
     }
 
 }
diff --git a/src/app/shared/select/components/index.ts b/src/app/shared/select/components/index.ts
deleted file mode 100644
index cff5264..0000000
--- a/src/app/shared/select/components/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./select.component";
diff --git a/src/app/shared/select/components/select.component.html b/src/app/shared/select/components/select.component.html
deleted file mode 100644
index 336b467..0000000
--- a/src/app/shared/select/components/select.component.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!-------------------------------------------------------------------------------
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- -------------------------------------------------------------------------------->
-
-<button #dropDown="appDropDown"
-        #toggleButtonRef
-        (click)="toggle()"
-        (keydown)="onKeyDown($event)"
-        [appConnectedPositions]="connectedPositions"
-        [appDisabled]="appDisabled || !(appOptions?.length > 0)"
-        [appDropDown]="optionsRef"
-        [class.select-toggle-opened-bottom]="dropDown?.position?.panelClass === 'bottom'"
-        [class.select-toggle-opened-top]="dropDown?.position?.panelClass === 'top'"
-        [disabled]="appDisabled"
-        [id]="appId"
-        class="select-toggle openk-input"
-        type="button">
-
-  <span *ngIf="(appOptions | selected: appValue)?.value != null; else placeholderRef" class="select-toggle-text">
-      {{(appOptions | selected: appValue)?.label }}
-  </span>
-
-  <ng-template #placeholderRef>
-    <span class="select-toggle-text select-toggle-text-placeholder"> {{appPlaceholder}} </span>
-  </ng-template>
-
-  <mat-icon [class.select-toggle-icon-opened]="dropDown.isOpen"
-            class="select-toggle-icon">
-    play_arrow
-  </mat-icon>
-
-</button>
-
-<ng-template #optionsRef>
-  <div (focusin)="toggleButtonRef.focus()"
-       (keydown)="onKeyDown($event)"
-       [class.select-options-bottom]="dropDown?.position?.panelClass === 'bottom'"
-       [class.select-options-top]="dropDown?.position?.panelClass === 'top'"
-       class="select-options"
-       tabindex="0">
-    <div (click)="onClickOnOption(option?.value)"
-         *ngFor="let option of appOptions"
-         [class.select-options-button-selected]="appValue != null && option?.value === appValue"
-         class="select-options-button openk-button">
-      <span class="select-options-button-label">
-        {{option?.label}}
-      </span>
-    </div>
-  </div>
-</ng-template>
diff --git a/src/app/shared/select/components/select.component.scss b/src/app/shared/select/components/select.component.scss
deleted file mode 100644
index eddb9a5..0000000
--- a/src/app/shared/select/components/select.component.scss
+++ /dev/null
@@ -1,125 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-@import "src/styles/openk.styles";
-
-:host {
-  display: inline-flex;
-  font-size: 0.875em;
-}
-
-.select-toggle {
-  display: inline-flex;
-  padding-right: 0.25em;
-  width: 100%;
-  font-size: 1em;
-  text-align: left;
-  cursor: pointer;
-
-  &:disabled {
-    cursor: initial;
-  }
-}
-
-.select-toggle-text {
-  overflow-x: hidden;
-  text-overflow: ellipsis;
-  padding-right: 0.5em;
-  min-height: 1.5em;
-}
-
-.select-toggle-text-placeholder {
-  color: get-color($openk-default-palette, 800);
-  font-style: italic;
-}
-
-.select-toggle-icon {
-  margin: auto 0 auto auto;
-  font-size: 1em;
-  width: initial;
-  height: initial;
-  transform: rotate(90deg);
-  transition: transform 100ms ease-in, color 100ms ease-in;
-  color: get-color($openk-default-palette, 800);
-}
-
-.select-toggle-icon-opened {
-  transform: rotate(270deg);
-  color: get-color($openk-info-palette, A300);
-}
-
-.select-toggle-opened-bottom {
-  border-bottom-right-radius: 0;
-}
-
-.select-toggle-opened-top {
-  border-top-right-radius: 0;
-}
-
-.select-options {
-  box-sizing: border-box;
-  width: calc(100% - 4px);
-  max-height: calc(7.5 * 2.5em);
-  overflow: auto;
-  display: flex;
-  flex-flow: column nowrap;
-  background: get-color($openk-default-palette);
-  border: 1px solid get-color($openk-default-palette, 800);
-  border-color: get-color($openk-info-palette, A300);
-  font-size: 0.875em;
-  box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
-}
-
-.select-options-bottom {
-  border-top: 0;
-}
-
-.select-options-top {
-  border-bottom: 0;
-  box-shadow: 0 -3px 3px rgba(0, 0, 0, 0.1);
-}
-
-.select-options-button {
-  min-height: 2.5em;
-  box-sizing: border-box;
-  padding: 0 0.85em 0 0.85em;
-  line-height: 1.5;
-  cursor: pointer;
-  width: 100%;
-  display: inline-flex;
-  justify-content: flex-start;
-  border: 0;
-  border-top: 1px dotted get-color($openk-default-palette, 800);
-  border-radius: 0;
-
-  &:first-child,
-  &.select-options-button-selected,
-  &.select-options-button-selected + & {
-    border-color: transparent;
-  }
-}
-
-.select-options-button-label {
-  text-overflow: ellipsis;
-  overflow-x: hidden;
-  white-space: nowrap;
-  width: 100%;
-  display: inline-block;
-  text-align: left;
-}
-
-.select-options-button-selected {
-  background: get-color($openk-info-palette, A300);
-  color: get-color($openk-info-palette, 500, contrast);
-  filter: none !important;
-}
diff --git a/src/app/shared/select/components/select.component.spec.ts b/src/app/shared/select/components/select.component.spec.ts
deleted file mode 100644
index e3062c4..0000000
--- a/src/app/shared/select/components/select.component.spec.ts
+++ /dev/null
@@ -1,346 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Component, ViewChild} from "@angular/core";
-import {async, ComponentFixture, TestBed} from "@angular/core/testing";
-import {FormsModule, NgForm, NgModel} from "@angular/forms";
-import {By} from "@angular/platform-browser";
-import {EKeyboardKeys} from "../../../util/events";
-import {ISelectOption} from "../ISelectOption";
-import {SelectModule} from "../select.module";
-import {SelectComponent} from "./select.component";
-
-describe("SelectComponent", () => {
-    let component: SelectSpecComponent;
-    let fixture: ComponentFixture<SelectSpecComponent>;
-
-    function getSelectToggle(): HTMLButtonElement {
-        return fixture.debugElement.query(By.css(".select-toggle"))?.nativeElement;
-    }
-
-    function getSelectToggleText(): HTMLSpanElement {
-        return fixture.debugElement.query(By.css(".select-toggle-text"))?.nativeElement;
-    }
-
-    function getOptions(): HTMLElement[] {
-        return fixture.debugElement
-            .queryAll(By.css(".select-options-button"))
-            .map((e) => e?.nativeElement)
-            .filter((e) => e != null);
-    }
-
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [
-                SelectSpecComponent
-            ],
-            imports: [
-                SelectModule,
-                FormsModule
-            ]
-        }).compileComponents();
-    }));
-
-    beforeEach(() => {
-        fixture = TestBed.createComponent(SelectSpecComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
-
-    it("should create", () => {
-        expect(component).toBeTruthy();
-        expect(component.selectComponentRef).toBeTruthy();
-        expect(component.ngModel).toBeTruthy();
-    });
-
-    it("should register to Angular forms", async () => {
-        component.modelValue = 19;
-        fixture.detectChanges();
-        await fixture.whenStable();
-        expect(component.ngForm.value).toEqual({select: 19});
-        expect(component.selectComponentRef.appValue).toBe(19);
-
-        component.ngForm.control.disable();
-        expect(component.selectComponentRef.appDisabled).toBeTrue();
-    });
-
-    it("should display the placeholder or the selected option", async () => {
-        component.appPlaceholder = "" + Math.random();
-        fixture.detectChanges();
-
-        expect(getSelectToggleText().innerText).toBeDefined();
-        expect(getSelectToggleText().innerText).toBe(component.appPlaceholder);
-
-        component.appValue = 19;
-        fixture.detectChanges();
-
-        expect(getSelectToggleText().innerText).toBeDefined();
-        expect(getSelectToggleText().innerText).toBe(component.appPlaceholder);
-
-        component.setOptions(100);
-        fixture.detectChanges();
-
-        expect(getSelectToggleText().innerText).toBeDefined();
-        expect(getSelectToggleText().innerText).toBe("Option 19");
-    });
-
-    it("should change value when clicking on option", async () => {
-        const toggle = getSelectToggle();
-
-        component.setOptions(100);
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        toggle.click();
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        const options = getOptions();
-        expect(options.length).toBe(100);
-
-        options[19].click();
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.appValue).toBe(19);
-        expect(component.ngModel.value).toBe(19);
-        expect(component.ngForm.value).toEqual({select: 19});
-        expect(getOptions().length).toBe(0);
-    });
-
-    it("should not change value when disabled", async () => {
-        const toggle = getSelectToggle();
-
-        component.setOptions(100);
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        toggle.click();
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        component.appDisabled = true;
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        component.selectComponentRef.onClickOnOption(19);
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.appValue).not.toBeDefined();
-        expect(component.ngModel.value).not.toBeDefined();
-        expect(component.ngForm.value).toEqual({select: undefined});
-        expect(getOptions().length).toBe(0);
-    });
-
-    it("should increase value with keyboard input", async () => {
-        const KEYS = [EKeyboardKeys.ARROW_DOWN, EKeyboardKeys.ARROW_RIGHT];
-        const NUMBER_OF_OPTIONS = 10;
-
-        const toggle = getSelectToggle();
-        component.setOptions(NUMBER_OF_OPTIONS);
-
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.appValue).toBe(undefined);
-
-        let selectedId = 0;
-
-        for (let i = 0; i < 2 * NUMBER_OF_OPTIONS; i++) {
-            for (const key of KEYS) {
-                toggle.dispatchEvent(new KeyboardEvent("keydown", {key}));
-                fixture.detectChanges();
-                await fixture.whenStable();
-                expect(component.appValue).toBe(selectedId);
-                expect(component.ngModel.value).toBe(selectedId);
-                expect(component.ngForm.value).toEqual({select: selectedId});
-                selectedId = selectedId + 1 >= NUMBER_OF_OPTIONS ? 0 : selectedId + 1;
-            }
-        }
-    });
-
-    it("should decrease value with keyboard input", async () => {
-        const KEYS = [EKeyboardKeys.ARROW_UP, EKeyboardKeys.ARROW_LEFT];
-        const NUMBER_OF_OPTIONS = 10;
-
-        const toggle = getSelectToggle();
-
-        component.setOptions(NUMBER_OF_OPTIONS);
-
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.appValue).toBe(undefined);
-
-        let selectedId = NUMBER_OF_OPTIONS - 1;
-
-        for (let i = 0; i < 2 * NUMBER_OF_OPTIONS; i++) {
-            for (const key of KEYS) {
-                toggle.dispatchEvent(new KeyboardEvent("keydown", {key}));
-                fixture.detectChanges();
-                await fixture.whenStable();
-                expect(component.appValue).toBe(selectedId);
-                expect(component.ngModel.value).toBe(selectedId);
-                expect(component.ngForm.value).toEqual({select: selectedId});
-                selectedId = selectedId <= 0 ? NUMBER_OF_OPTIONS - 1 : selectedId - 1;
-            }
-        }
-    });
-
-    it("should do nothing on keyboard inputs when no options are available", async () => {
-        const KEYS = [EKeyboardKeys.ARROW_DOWN, EKeyboardKeys.ARROW_RIGHT, EKeyboardKeys.ARROW_UP, EKeyboardKeys.ARROW_LEFT];
-
-        const toggle = getSelectToggle();
-
-        for (const key of KEYS) {
-            toggle.dispatchEvent(new KeyboardEvent("keydown", {key}));
-            fixture.detectChanges();
-            await fixture.whenStable();
-            expect(component.appValue).not.toBeDefined();
-            expect(component.ngModel.value).not.toBeDefined();
-            expect(component.ngForm.value).toEqual({select: undefined});
-        }
-    });
-
-    it("should do nothing on keyboard inputs when disabled", async () => {
-        const KEYS = [EKeyboardKeys.ARROW_DOWN, EKeyboardKeys.ARROW_RIGHT, EKeyboardKeys.ARROW_UP, EKeyboardKeys.ARROW_LEFT];
-
-        const toggle = getSelectToggle();
-
-        component.setOptions(100);
-        component.appDisabled = true;
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        for (const key of KEYS) {
-            toggle.dispatchEvent(new KeyboardEvent("keydown", {key}));
-            fixture.detectChanges();
-            await fixture.whenStable();
-            expect(component.appValue).not.toBeDefined();
-            expect(component.ngModel.value).not.toBeDefined();
-            expect(component.ngForm.value).toEqual({select: undefined});
-        }
-    });
-
-    it("should toggle drop down menu on click", async () => {
-        const toggle = getSelectToggle();
-
-        component.setOptions(100);
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        toggle.click();
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.selectComponentRef.dropDown.isOpen).toBeTrue();
-        expect(getOptions().length).toBe(100);
-
-        toggle.click();
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.selectComponentRef.dropDown.isOpen).toBeFalse();
-        expect(getOptions().length).toBe(0);
-    });
-
-    it("should not toggle drop down menu when disabled or no options are available", async () => {
-        const toggle = getSelectToggle();
-
-        toggle.click();
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.selectComponentRef.dropDown.isOpen).toBeFalse();
-        expect(getOptions().length).toBe(0);
-
-        component.setOptions(100);
-        component.appDisabled = true;
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        expect(component.selectComponentRef.dropDown.isOpen).toBeFalse();
-        expect(getOptions().length).toBe(0);
-    });
-
-    it("should close drop down on pressing tab or escape", async () => {
-        const KEYS = [EKeyboardKeys.TAB, EKeyboardKeys.ESCAPE];
-
-        const toggle = getSelectToggle();
-
-        component.setOptions(100);
-        fixture.detectChanges();
-        await fixture.whenStable();
-
-        for (const key of KEYS) {
-            toggle.click();
-            fixture.detectChanges();
-            await fixture.whenStable();
-
-            expect(component.selectComponentRef.dropDown.isOpen).toBeTrue();
-            expect(getOptions().length).toBe(100);
-
-            toggle.dispatchEvent(new KeyboardEvent("keydown", {key}));
-            fixture.detectChanges();
-            await fixture.whenStable();
-
-            expect(component.selectComponentRef.dropDown.isOpen).toBeFalse();
-            expect(getOptions().length).toBe(0);
-        }
-    });
-
-});
-
-@Component({
-    selector: "app-select-spec",
-    template: `
-        <form>
-            <app-select
-                [(appValue)]="appValue"
-                [appDisabled]="appDisabled"
-                [appOptions]="appOptions"
-                [appPlaceholder]="appPlaceholder"
-                [ngModel]="modelValue"
-                name="select">
-            </app-select>
-        </form>
-    `
-})
-class SelectSpecComponent {
-
-    @ViewChild(NgModel)
-    public ngModel: NgModel;
-
-    @ViewChild(NgForm)
-    public ngForm: NgForm;
-
-    @ViewChild(SelectComponent)
-    public selectComponentRef: SelectComponent;
-
-    public appValue: number;
-
-    public appOptions: ISelectOption[];
-
-    public appDisabled: boolean;
-
-    public appPlaceholder: string;
-
-    public modelValue: number;
-
-    public setOptions(size: number) {
-        this.appOptions = size == null ? undefined : Array(size)
-            .fill(0).map((_, value) => ({value, label: "Option " + value}));
-    }
-
-}
diff --git a/src/app/shared/select/components/select.component.stories.ts b/src/app/shared/select/components/select.component.stories.ts
deleted file mode 100644
index fb782bf..0000000
--- a/src/app/shared/select/components/select.component.stories.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {action} from "@storybook/addon-actions";
-import {boolean, number, text, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-import {ISelectOption} from "../ISelectOption";
-import {SelectModule} from "../select.module";
-
-storiesOf("Shared", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({imports: [SelectModule]}))
-    .add("Select", () => ({
-        template: `
-            <app-select style="margin: 1em; width: 10em;" class="openk-info"
-                [appDisabled]="appDisabled"
-                [appOptions]="appOptions"
-                [appPlaceholder]="appPlaceholder"
-                [appValue]="appValue"
-                (appValueChange)="appValueChange($event)">
-            </app-select>
-        `,
-        props: {
-            appValue: number("appValue", undefined),
-            appOptions: Array(5).fill(0).map<ISelectOption>((_, value) => ({label: "Option " + value, value})),
-            appPlaceholder: text("appPlaceholder", "Placeholder"),
-            appDisabled: boolean("appDisabled", false),
-            appValueChange: action("appValueChange")
-        }
-    }));
diff --git a/src/app/shared/select/components/select.component.ts b/src/app/shared/select/components/select.component.ts
deleted file mode 100644
index b9a4ec9..0000000
--- a/src/app/shared/select/components/select.component.ts
+++ /dev/null
@@ -1,175 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {ConnectedPosition} from "@angular/cdk/overlay";
-import {Component, EventEmitter, forwardRef, Input, Output, ViewChild} from "@angular/core";
-import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms";
-import {EKeyboardKeys} from "../../../util/events";
-import {DropDownDirective} from "../../drop-down";
-import {ISelectOption} from "../ISelectOption";
-
-@Component({
-    selector: "app-select",
-    templateUrl: "./select.component.html",
-    styleUrls: ["./select.component.scss"],
-    providers: [
-        {
-            provide: NG_VALUE_ACCESSOR,
-            useExisting: forwardRef(() => SelectComponent),
-            multi: true
-        }
-    ]
-})
-export class SelectComponent implements ControlValueAccessor {
-
-    private static id = 0;
-
-    @Input()
-    public appId = `CalendarControlComponent${SelectComponent.id++}`;
-
-    @Input()
-    public appPlaceholder = "";
-
-    @Input()
-    public appValue: any;
-
-    @Input()
-    public appOptions: ISelectOption[] = [];
-
-    @Output()
-    public appValueChange = new EventEmitter<any>();
-
-    @ViewChild(DropDownDirective)
-    public dropDown: DropDownDirective;
-
-    public readonly connectedPositions: ConnectedPosition[] = [
-        {
-            originX: "start",
-            originY: "bottom",
-            overlayX: "start",
-            overlayY: "top",
-            offsetX: 4,
-            panelClass: "bottom"
-        },
-        {
-            originX: "start",
-            originY: "top",
-            overlayX: "start",
-            overlayY: "bottom",
-            offsetX: 4,
-            panelClass: "top"
-        },
-        {
-            originX: "start",
-            originY: "center",
-            overlayX: "start",
-            overlayY: "center",
-            panelClass: "center",
-            offsetX: 4
-        }
-    ];
-
-    @Input()
-    public appDisabled = false;
-
-    public onChange = (_: any) => null;
-
-    public onTouch = () => null;
-
-    public writeValue(obj: any, emit?: boolean) {
-        const oldValue = this.appValue;
-        this.appValue = obj;
-        if (emit && oldValue !== obj) {
-            this.appValueChange.emit(obj);
-            this.onChange(obj);
-            this.onTouch();
-        }
-    }
-
-    public registerOnChange(fn: any) {
-        this.onChange = typeof fn === "function" ? fn : this.onChange;
-    }
-
-    public registerOnTouched(fn: any) {
-        this.onTouch = typeof fn === "function" ? fn : this.onTouch;
-    }
-
-    public setDisabledState(isDisabled: boolean) {
-        this.appDisabled = isDisabled;
-    }
-
-    public toggle(openOrClose?: boolean) {
-        this.dropDown.toggle(openOrClose);
-    }
-
-    public onClickOnOption(value: any) {
-        this.toggle(false);
-        if (this.appDisabled) {
-            return;
-        }
-        this.writeValue(value, true);
-    }
-
-    public onKeyDown(event: KeyboardEvent) {
-        switch (event?.key) {
-            case EKeyboardKeys.ESCAPE:
-            case EKeyboardKeys.TAB:
-                return this.toggle(false);
-            case EKeyboardKeys.ARROW_DOWN:
-            case EKeyboardKeys.ARROW_RIGHT: {
-                const value = this.getNextValue();
-                if (this.appDisabled || value == null) {
-                    return;
-                }
-                event.preventDefault();
-                return this.writeValue(value, true);
-            }
-            case EKeyboardKeys.ARROW_UP:
-            case EKeyboardKeys.ARROW_LEFT: {
-                const value = this.getPreviousValue();
-                if (this.appDisabled || value == null) {
-                    return;
-                }
-                event.preventDefault();
-                return this.writeValue(value, true);
-            }
-        }
-    }
-
-    public getNextValue() {
-        if (!Array.isArray(this.appOptions)) {
-            return;
-        }
-
-        if (this.appValue == null) {
-            return this.appOptions[0]?.value;
-        } else {
-            const index = this.appOptions.findIndex((o) => o?.value === this.appValue) + 1;
-            return this.appOptions[index < this.appOptions?.length ? index : 0]?.value;
-        }
-    }
-
-    public getPreviousValue() {
-        if (!Array.isArray(this.appOptions)) {
-            return;
-        }
-
-        if (this.appValue == null) {
-            return this.appOptions[this.appOptions.length - 1]?.value;
-        } else {
-            const index = this.appOptions.findIndex((o) => o?.value === this.appValue) - 1;
-            return this.appOptions[index > -1 ? index : this.appOptions.length - 1]?.value;
-        }
-    }
-
-}
diff --git a/src/app/shared/select/pipes/selected.pipe.ts b/src/app/shared/select/pipes/selected.pipe.ts
deleted file mode 100644
index 0641428..0000000
--- a/src/app/shared/select/pipes/selected.pipe.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Pipe, PipeTransform} from "@angular/core";
-import {ISelectOption} from "../ISelectOption";
-
-@Pipe({name: "selected"})
-export class SelectedPipe implements PipeTransform {
-
-    public transform(options: ISelectOption[], selectedId: any, autoSelectFirst?: boolean): ISelectOption {
-        if (!Array.isArray(options)) {
-            return undefined;
-        }
-
-        if (selectedId == null && autoSelectFirst) {
-            return options[0];
-        }
-
-        if (selectedId == null) {
-            return undefined;
-        }
-
-        return options.find((o) => o?.value === selectedId);
-    }
-
-}
diff --git a/src/app/shared/select/select.module.ts b/src/app/shared/select/select.module.ts
deleted file mode 100644
index 36b25c6..0000000
--- a/src/app/shared/select/select.module.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {NgModule} from "@angular/core";
-import {MatIconModule} from "@angular/material/icon";
-import {DropDownModule} from "../drop-down";
-import {SelectComponent} from "./components";
-import {SelectedPipe} from "./pipes";
-
-@NgModule({
-    imports: [
-        CommonModule,
-        DropDownModule,
-        MatIconModule
-    ],
-    declarations: [
-        SelectComponent,
-        SelectedPipe
-    ],
-    exports: [
-        SelectComponent,
-        SelectedPipe
-    ]
-})
-export class SelectModule {
-
-}
diff --git a/src/app/shared/storybook/standard-html-controls.stories.ts b/src/app/shared/storybook/standard-html-controls.stories.ts
deleted file mode 100644
index f1ec42e..0000000
--- a/src/app/shared/storybook/standard-html-controls.stories.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {CommonModule} from "@angular/common";
-import {MatIconModule} from "@angular/material/icon";
-import {boolean, number, withKnobs} from "@storybook/addon-knobs";
-import {moduleMetadata, storiesOf} from "@storybook/angular";
-
-const templateInput = `
-    <div style="display: flex; flex-flow: column; padding: 1em; justify-content: center; box-sizing: border-box;">
-      <input type="text" value="Default" style="margin: 0.5em; box-sizing: border-box;" class="openk-input"
-             [disabled]="disabled" [style.max-width]="maxWidth + 'em'">
-      <input type="text" value="Info" style="margin: 0.5em; box-sizing: border-box;" class="openk-input openk-info"
-             [disabled]="disabled" [style.max-width]="maxWidth + 'em'">
-      <input type="text" value="Info" style="margin: 0.5em; box-sizing: border-box;" class="openk-input openk-primary"
-             [disabled]="disabled" [style.max-width]="maxWidth + 'em'">
-      <input type="text" value="Success" style="margin: 0.5em; box-sizing: border-box;" class="openk-input openk-success"
-             [disabled]="disabled" [style.max-width]="maxWidth + 'em'">
-      <input type="text" value="Warning" style="margin: 0.5em; box-sizing: border-box;" class="openk-input openk-warning"
-             [disabled]="disabled" [style.max-width]="maxWidth + 'em'">
-      <input type="text" value="Danger" style="margin: 0.5em; box-sizing: border-box;" class="openk-input openk-danger"
-             [disabled]="disabled" [style.max-width]="maxWidth + 'em'">
-    </div>
-`;
-
-const templateButton = `
-    <div style="display: flex; flex-flow: row wrap; padding: 1em; box-sizing: border-box;">
-      <button class="openk-button"
-        style="margin: 0.5em;"
-        *ngFor="let class of [null, 'primary', 'info', 'success', 'warning', 'danger']"
-        [disabled]="disabled"
-        [class.openk-button-rounded]="rounded"
-        [ngClass]=" class == null ? null : 'openk-' + class">
-
-        <mat-icon *ngIf="rounded || withIcon">view_list</mat-icon>
-        <ng-container *ngIf="!rounded"> {{class == null ? 'default' : class}} </ng-container>
-      </button>
-    </div>
-`;
-
-storiesOf("01 Shared / Standard HTML Controls", module)
-    .addDecorator(withKnobs)
-    .addDecorator(moduleMetadata({imports: [CommonModule, MatIconModule]}))
-    .add("Text Field", () => ({
-        template: templateInput,
-        props: {
-            disabled: boolean("Disabled", false),
-            maxWidth: number("Width", 20, {range: true, min: 0, max: 20, step: 1})
-        }
-    }))
-    .add("Buttons", () => ({
-        template: templateButton,
-        props: {
-            disabled: boolean("Disabled", false),
-            withIcon: boolean("With Icon", true),
-            rounded: boolean("Rounded", false)
-        }
-    }));
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/shared/text-block/components/editor-textblock-select/index.ts
similarity index 91%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/shared/text-block/components/editor-textblock-select/index.ts
index 7378646..fe33d98 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/shared/text-block/components/editor-textblock-select/index.ts
@@ -11,4 +11,5 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./text-block-select.component";
+
diff --git a/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.html b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.html
new file mode 100644
index 0000000..b72785b
--- /dev/null
+++ b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.html
@@ -0,0 +1,46 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<div (cdkDropListDropped)="drop($event)"
+     cdkDropList
+     class="select openk-drag-list-with-hidden-placeholder">
+
+  <app-text-block-list
+    (appAdd)="appAdd.emit($event)"
+    [appConnectedTo]="appConnectedTo"
+    [appDuplicateOnDrag]="true"
+    [appListData]="standardBlocks">
+  </app-text-block-list>
+
+  <app-collapsible
+    *ngFor="let group of appGroups"
+    [appSimpleCollapsible]="true"
+    [appTitle]="group?.groupName"
+    class="text-block-group">
+
+    <app-text-block-list
+      (appAdd)="appAdd.emit($event)"
+      [appConnectedTo]="appConnectedTo"
+      [appDuplicateOnDrag]="true"
+      [appListData]="group?.textBlocks.slice()"
+      [appSelectedIds]="appSelectedIds"
+      [appShortMode]="appShortMode">
+
+    </app-text-block-list>
+
+  </app-collapsible>
+
+</div>
+
+
+
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.scss
similarity index 78%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.scss
index fc6c436..e72ce9c 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.scss
@@ -11,7 +11,14 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+.select {
+  width: 100%;
+  box-sizing: border-box;
+  height: 100%;
+}
+
+.text-block-group {
+  border: initial;
+  background: initial;
+  margin-top: 0.5em;
 }
diff --git a/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.spec.ts b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.spec.ts
new file mode 100644
index 0000000..9279f95
--- /dev/null
+++ b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.spec.ts
@@ -0,0 +1,59 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CdkDragDrop, CdkDropList} from "@angular/cdk/drag-drop";
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {I18nModule} from "../../../../core/i18n";
+import {IExtendedTextBlockModel} from "../../model";
+import {TextBlockModule} from "../../text-block.module";
+import {TextBlockSelectComponent} from "./text-block-select.component";
+
+describe("TextBlockSelectComponent", () => {
+    let component: TextBlockSelectComponent;
+    let fixture: ComponentFixture<TextBlockSelectComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                TextBlockModule,
+                I18nModule
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(TextBlockSelectComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it("should be created", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should emit the index on drop when drop destination is a different container", () => {
+        const container: CdkDropList<IExtendedTextBlockModel> = {} as CdkDropList<IExtendedTextBlockModel>;
+        const dragEvent: CdkDragDrop<IExtendedTextBlockModel> = {
+            previousContainer: container,
+            container,
+            prevousIndex: 0
+        } as unknown as CdkDragDrop<IExtendedTextBlockModel>;
+
+        spyOn(component.appRemove, "emit").and.callThrough();
+        component.drop(dragEvent);
+        expect(component.appRemove.emit).not.toHaveBeenCalled();
+        component.drop({...dragEvent, container: {data: []} as unknown as CdkDropList<IExtendedTextBlockModel>});
+        expect(component.appRemove.emit).toHaveBeenCalledWith(dragEvent.previousIndex);
+    });
+});
+
diff --git a/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.ts b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.ts
new file mode 100644
index 0000000..64f4243
--- /dev/null
+++ b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.component.ts
@@ -0,0 +1,59 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CdkDragDrop, CdkDropList} from "@angular/cdk/drag-drop";
+import {Component, EventEmitter, Input, Output, ViewChild} from "@angular/core";
+import {IAPITextBlockGroupModel} from "../../../../core";
+import {IExtendedTextBlockModel} from "../../model";
+
+@Component({
+    selector: "app-text-block-select",
+    templateUrl: "./text-block-select.component.html",
+    styleUrls: ["./text-block-select.component.scss"]
+})
+export class TextBlockSelectComponent {
+
+    @Input()
+    public appShortMode: boolean;
+
+    @Input()
+    public appGroups: IAPITextBlockGroupModel[];
+
+    @Input()
+    public appSelectedIds: string[];
+
+    @Input()
+    public appConnectedTo: CdkDropList | string | Array<CdkDropList | string>;
+
+    @Output()
+    public appAdd = new EventEmitter<IExtendedTextBlockModel>();
+
+    @Output()
+    public appRemove = new EventEmitter<number>();
+
+    @ViewChild(CdkDropList, {static: true})
+    public dropList: CdkDropList;
+
+    public standardBlocks: IExtendedTextBlockModel[] = [
+        {id: "Freitext", text: "", excludes: [], requires: [], type: "text"},
+        {id: "Zeilenumbruch", text: "", excludes: [], requires: [], type: "newline"},
+        {id: "Seitenumbruch", text: "", excludes: [], requires: [], type: "pagebreak"}
+    ];
+
+    public drop(event: CdkDragDrop<IExtendedTextBlockModel>) {
+        if (event.container !== event.previousContainer) {
+            this.appRemove.emit(event.previousIndex);
+        }
+    }
+
+}
diff --git a/src/app/shared/text-block/components/editor-textblock-select/text-block-select.stories.ts b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.stories.ts
new file mode 100644
index 0000000..194abc7
--- /dev/null
+++ b/src/app/shared/text-block/components/editor-textblock-select/text-block-select.stories.ts
@@ -0,0 +1,66 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {boolean, withKnobs} from "@storybook/addon-knobs";
+import {moduleMetadata, storiesOf} from "@storybook/angular";
+import {IAPITextBlockGroupModel, IAPITextBlockModel} from "../../../../core/api/text";
+import {I18nModule} from "../../../../core/i18n";
+import {TextBlockModule} from "../../text-block.module";
+
+const textBlock: IAPITextBlockModel = {
+    id: "Textbaustein 1.1",
+    text: "Ich bin ein Test Block Inhalt mit einem Select <s:irgendeinnamen> und einem Freitextfeld <f:text>",
+    excludes: [],
+    requires: []
+};
+
+const textBlocks: IAPITextBlockModel[] = [
+    {...textBlock, id: "Textbaustein 1.1"},
+    {...textBlock, id: "Textbaustein 1.2"},
+    {...textBlock, id: "Textbaustein 2.1"},
+    {...textBlock, id: "Textbaustein 3.4"}
+];
+
+const groups: IAPITextBlockGroupModel[] = [
+    {
+        groupName: "Textblockgruppe 1",
+        textBlocks: textBlocks.map((_) => ({..._, id: _.id + (Math.random())}))
+    },
+    {
+        groupName: "Textblockgruppe 2",
+        textBlocks: textBlocks.map((_) => ({..._, id: _.id + (Math.random())}))
+    }
+];
+
+storiesOf("Shared", module)
+    .addDecorator(withKnobs)
+    .addDecorator(moduleMetadata({
+        imports: [
+            TextBlockModule,
+            I18nModule
+        ]
+    }))
+    .add("TextBlockSelectComponent", () => ({
+        template: `
+            <div style="padding: 1em; overflow: auto; width: 50%; background: #ffffff;">
+                      <app-text-block-select
+                        [appGroups]="groups"
+                        [appShortMode]="shortMode">
+                        </app-text-block-select>
+            </div>
+        `,
+        props: {
+            groups,
+            shortMode: boolean("short mode", false)
+        }
+    }));
diff --git a/src/app/shared/index.ts b/src/app/shared/text-block/components/index.ts
similarity index 67%
rename from src/app/shared/index.ts
rename to src/app/shared/text-block/components/index.ts
index 78585b5..9197801 100644
--- a/src/app/shared/index.ts
+++ b/src/app/shared/text-block/components/index.ts
@@ -11,11 +11,11 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./date-control";
-export * from "./card";
-export * from "./drop-down";
-export * from "./file-drop";
-export * from "./page-header";
-export * from "./pipes";
-export * from "./progress-spinner";
-export * from "./select";
+export * from "./editor-textblock-select";
+export * from "./text-block-list";
+export * from "./text-block";
+export * from "./text-replacement";
+export * from "./text-block";
+export * from "./text-replacement";
+export * from "./text-block";
+export * from "./text-replacement";
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/text-block/components/text-block-list/index.ts
similarity index 92%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/text-block/components/text-block-list/index.ts
index 2e6e007..de7c05b 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/text-block/components/text-block-list/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./text-block-list.component";
diff --git a/src/app/shared/text-block/components/text-block-list/text-block-list.component.html b/src/app/shared/text-block/components/text-block-list/text-block-list.component.html
new file mode 100644
index 0000000..0affc85
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block-list/text-block-list.component.html
@@ -0,0 +1,42 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<div [cdkDropListConnectedTo]="appConnectedTo"
+     [cdkDropListData]="appListData"
+     [cdkDropListEnterPredicate]="appEnterPredicate"
+     [cdkDropListSortingDisabled]="true"
+     cdkDropList>
+
+  <app-text-block
+    (cdkDragEnded)="isDragging = false; stopDrag(block)"
+    (cdkDragReleased)="isDragging = false"
+    (cdkDragStarted)="isDragging = true; startDrag(block)"
+    (appButtonPress)="appAdd.emit(block)"
+    *ngFor="let block of appListData"
+    [appShortMode]="appShortMode"
+    [appShowNewLine]="false"
+    [appTextBlockData]="block | getBlockDataFromBlockModel"
+    [appTitle]="block.id"
+    [cdkDragData]="block"
+    [cdkDragDisabled]="(block?.id | findElementInArray : appSelectedIds) != null"
+    [class.text-block-list-entry---selected]="(block?.id | findElementInArray : appSelectedIds) != null"
+    cdkDrag
+    class="text-block-list-entry grab">
+  </app-text-block>
+
+</div>
+
+<ng-container
+  *ngIf="isDragging"
+  [appGlobalClass]="'grabbing'">
+</ng-container>
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/text-block/components/text-block-list/text-block-list.component.scss
similarity index 81%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/shared/text-block/components/text-block-list/text-block-list.component.scss
index fc6c436..004a177 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/text-block/components/text-block-list/text-block-list.component.scss
@@ -11,7 +11,11 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+.text-block-list-entry {
+  position: relative;
+  margin-bottom: 0.5em;
+}
+
+.text-block-list-entry---selected {
+  display: none;
 }
diff --git a/src/app/shared/text-block/components/text-block-list/text-block-list.component.spec.ts b/src/app/shared/text-block/components/text-block-list/text-block-list.component.spec.ts
new file mode 100644
index 0000000..49ac9c7
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block-list/text-block-list.component.spec.ts
@@ -0,0 +1,72 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {IAPITextBlockModel} from "../../../../core/api/text";
+import {TextBlockModule} from "../../text-block.module";
+import {TextBlocksListComponent} from "./text-block-list.component";
+
+describe("TextBlocksListComponent", () => {
+    let component: TextBlocksListComponent;
+    let fixture: ComponentFixture<TextBlocksListComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                TextBlockModule
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(TextBlocksListComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it("should be created", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should add and remove a duplicate element to the list if appDuplicateOnDrag is set when starting to drag", () => {
+
+        const element: IAPITextBlockModel = {
+            id: "2",
+            text: "different text",
+            excludes: [],
+            requires: []
+        };
+
+        const listData: IAPITextBlockModel[] = [
+            {id: "1", text: "some text", excludes: [], requires: []},
+            element,
+            {id: "3", text: "more text", excludes: [], requires: []}
+        ];
+
+        component.appDuplicateOnDrag = true;
+        component.appListData = listData;
+        component.startDrag(element);
+        expect(component.appListData).toEqual([
+            {id: "1", text: "some text", excludes: [], requires: []},
+            element,
+            element,
+            {id: "3", text: "more text", excludes: [], requires: []}
+        ]);
+        component.stopDrag(element);
+        expect(component.appListData).toEqual(listData);
+
+        component.appDuplicateOnDrag = false;
+        component.startDrag(element);
+        expect(component.appListData).toEqual(listData);
+    });
+});
diff --git a/src/app/shared/text-block/components/text-block-list/text-block-list.component.ts b/src/app/shared/text-block/components/text-block-list/text-block-list.component.ts
new file mode 100644
index 0000000..db9f66b
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block-list/text-block-list.component.ts
@@ -0,0 +1,69 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {CdkDrag, CdkDropList} from "@angular/cdk/drag-drop";
+import {DOCUMENT} from "@angular/common";
+import {Component, EventEmitter, Inject, Input, Output} from "@angular/core";
+import {IAPITextBlockModel} from "../../../../core";
+
+@Component({
+    selector: "app-text-block-list",
+    templateUrl: "./text-block-list.component.html",
+    styleUrls: ["./text-block-list.component.scss"]
+})
+export class TextBlocksListComponent {
+
+    @Input()
+    public appListData: IAPITextBlockModel[];
+
+    @Input()
+    public appDuplicateOnDrag: boolean;
+
+    @Input()
+    public appConnectedTo: CdkDropList | string | Array<CdkDropList | string>;
+
+    @Input()
+    public appShortMode: boolean;
+
+    @Input()
+    public appSelectedIds: string[];
+
+    @Output()
+    public appAdd = new EventEmitter<IAPITextBlockModel>();
+
+    public isDragging: boolean;
+
+    public constructor(@Inject(DOCUMENT) public document: Document) {
+
+    }
+
+    @Input()
+    public appEnterPredicate(drag: CdkDrag, drop: CdkDropList): boolean {
+        return false;
+    }
+
+    public startDrag(block: IAPITextBlockModel) {
+        if (this.appDuplicateOnDrag && Array.isArray(this.appListData)) {
+            const index = this.appListData.indexOf(block);
+            this.appListData.splice(index + 1, 0, {...block});
+        }
+    }
+
+    public stopDrag(block: IAPITextBlockModel) {
+        if (this.appDuplicateOnDrag && Array.isArray(this.appListData)) {
+            const index = this.appListData.lastIndexOf(block);
+            this.appListData.splice(index, 1);
+        }
+    }
+
+}
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/text-block/components/text-block/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/text-block/components/text-block/index.ts
index 2e6e007..1177b25 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/text-block/components/text-block/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./text-block.component";
diff --git a/src/app/shared/text-block/components/text-block/text-block.component.html b/src/app/shared/text-block/components/text-block/text-block.component.html
new file mode 100644
index 0000000..63c28b3
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block/text-block.component.html
@@ -0,0 +1,89 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<div (mousedown)="editText ? $event.stopPropagation() : null" [class.text-block---error]="appErrors?.length > 0"
+     class="text-block openk-drag-element">
+
+  <div class="title-bar">
+    <span class="title-bar--title">{{appTitle | translate}}</span>
+    <div class="title-bar--buttons">
+      <button (click)="convertToTextInput()" *ngIf="!editText && (appType === 'block' || appType === 'text')"
+              class="openk-mat-icon-button title-bar--buttons-btn" mat-icon-button>
+        <mat-icon>edit</mat-icon>
+      </button>
+      <button (click)="revert()" *ngIf="(appType === 'block' || appType === 'text') && appBlockText"
+              class="openk-mat-icon-button title-bar--buttons-btn" mat-icon-button>
+        <mat-icon class="">backspace</mat-icon>
+      </button>
+      <button (click)="addNewLineAfter()" *ngIf="appShowNewLine && appTextBlockData?.length === 0"
+              class="openk-mat-icon-button" mat-icon-button>
+        <mat-icon class="">keyboard_return</mat-icon>
+      </button>
+    </div>
+
+    <div class="title-bar--error-msg">
+      <span *ngIf="appErrors?.length > 0"
+            class="title-bar--block-error">{{(appErrors[0]?.message | translate) + appErrors[0]?.ids.toString()}}</span>
+    </div>
+
+    <div>
+      <button (click)="appButtonPress.emit()" class="openk-mat-icon-button" mat-icon-button>
+        <mat-icon class="">{{appShowClose ? "remove_circle_outline" : "add_circle_outline"}}</mat-icon>
+      </button>
+    </div>
+
+  </div>
+
+  <div *ngIf="!editText" [class.fade]="appShortMode">
+
+    <ng-container *ngFor="let block of appTextBlockData, trackBy: trackByIndex">
+
+      <span *ngIf="block?.type === 'text'">
+        {{block?.value}}
+      </span>
+
+      <span *ngIf="block?.type === 'highlight-text'" class="highlight-text">
+        {{block?.value}}
+      </span>
+
+      <ng-container *ngIf="block?.type === 'newline'">
+        <br>
+      </ng-container>
+
+      <app-text-replacement (appValueChange)="valueChange(block?.value, $event, block?.type)"
+                            *ngIf="block?.type === 'input' || block?.type === 'date' || block?.type === 'select'"
+                            [appPlaceholder]="block?.value"
+                            [appOptions]="block?.options" [appType]="block?.type"
+                            [appValue]="block?.placeholder">
+      </app-text-replacement>
+
+      <span *ngIf="block?.type === 'text-fill'" [class.error]="!block?.placeholder"
+            class="highlight-text">
+        {{block?.placeholder ? block.placeholder : block?.value}}
+      </span>
+
+    </ng-container>
+
+  </div>
+
+  <div [class.hidden]="!editText">
+    <app-text-field (appFocusOut)="editText = false" (appInputValue)="onInput($event)" [appIsFocused]="editText"
+                    [appValue]="appBlockText"></app-text-field>
+  </div>
+
+  <button (click)="addNewLineAfter()" *ngIf="appShowNewLine && appTextBlockData?.length > 0"
+          class="openk-mat-icon-button" mat-icon-button>
+    <mat-icon>keyboard_return</mat-icon>
+  </button>
+
+</div>
diff --git a/src/app/shared/text-block/components/text-block/text-block.component.scss b/src/app/shared/text-block/components/text-block/text-block.component.scss
new file mode 100644
index 0000000..b31fb4b
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block/text-block.component.scss
@@ -0,0 +1,101 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+@import "src/styles/openk.styles";
+
+:host {
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+}
+
+.text-block {
+  padding: 0.3em;
+  border: 1px dashed get-color($openk-default-palette, 900);
+  border-radius: 6px;
+  background-color: get-color($openk-default-palette);
+}
+
+.text-block---error {
+  border-color: get-color($openk-danger-palette, 200);
+}
+
+.title-bar {
+  display: flex;
+  flex-direction: row;
+  font-size: 0.8em;
+  align-items: center;
+}
+
+.title-bar--title {
+  margin-right: 0.2em;
+}
+
+.title-bar--error-msg {
+  flex: 1;
+  margin-right: 1em;
+}
+
+.title-bar--buttons {
+  display: flex;
+  flex-direction: row;
+}
+
+.title-bar--buttons-btn {
+  margin-right: 0.2em;
+}
+
+.title-bar--buttons-btn-icon {
+  padding: 0;
+  height: initial;
+  width: initial;
+}
+
+.title-bar--block-info {
+  float: right;
+}
+
+.title-bar--block-error {
+  float: right;
+  color: get-color($openk-danger-palette, 200);
+}
+
+.highlight-text {
+  background-color: $openk-background-highlight;
+}
+
+.fade {
+  position: relative;
+  max-height: 2.75em;
+  line-height: 1.4em;
+  overflow: hidden;
+}
+
+.fade::after {
+  content: "";
+  text-align: right;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  width: 80%;
+  height: 1.44em;
+  background: linear-gradient(to right, rgba(get-color($openk-default-palette), 0), get-color($openk-default-palette) 50%);
+}
+
+.error {
+  background-color: get-color($openk-danger-palette, 200);
+}
+
+.hidden {
+  display: none;
+}
diff --git a/src/app/shared/text-block/components/text-block/text-block.component.spec.ts b/src/app/shared/text-block/components/text-block/text-block.component.spec.ts
new file mode 100644
index 0000000..5b21620
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block/text-block.component.spec.ts
@@ -0,0 +1,85 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {I18nModule} from "../../../../core/i18n";
+import {TextBlockModule} from "../../text-block.module";
+import {TextBlockComponent} from "./text-block.component";
+
+describe("TextBlockComponent", () => {
+    let component: TextBlockComponent;
+    let fixture: ComponentFixture<TextBlockComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                TextBlockModule,
+                I18nModule
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(TextBlockComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it("should be created", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should emit appNewLine with appTitle as parameter", () => {
+        spyOn(component.appNewLine, "emit").and.callThrough();
+        component.appTitle = "TestTitle";
+        component.addNewLineAfter();
+        expect(component.appNewLine.emit).toHaveBeenCalledWith("TestTitle");
+    });
+
+    it("should emit appDeleteComment with the comment id", () => {
+        spyOn(component.appValueChange, "emit").and.callThrough();
+        component.valueChange("name", "Hugo", "input");
+        expect(component.appValueChange.emit).toHaveBeenCalledWith({name: "<f:name>", newValue: "Hugo"});
+    });
+
+    it("should emit appTextInput and set editText to true", () => {
+        spyOn(component.appTextInput, "emit").and.callThrough();
+        component.editText = false;
+        component.convertToTextInput();
+        expect(component.appTextInput.emit).toHaveBeenCalled();
+        expect(component.editText).toBeTrue();
+    });
+
+    it("should emit appChangeText with the given value", () => {
+        spyOn(component.appChangeText, "emit").and.callThrough();
+        const value = "test value";
+        component.onInput(value);
+        expect(component.appChangeText.emit).toHaveBeenCalledWith(value);
+    });
+
+    it("should emit appChangeText with empty string for freetext and otherwise undefined and set editText to false", () => {
+        spyOn(component.appChangeText, "emit").and.callThrough();
+        component.editText = true;
+        component.appType = "text";
+        component.revert();
+        expect(component.appChangeText.emit).toHaveBeenCalledWith("");
+        expect(component.editText).toBeFalse();
+
+        component.editText = true;
+        component.appType = "block";
+        component.revert();
+        expect(component.appChangeText.emit).toHaveBeenCalledWith(undefined);
+        expect(component.editText).toBeFalse();
+    });
+
+});
diff --git a/src/app/shared/text-block/components/text-block/text-block.component.ts b/src/app/shared/text-block/components/text-block/text-block.component.ts
new file mode 100644
index 0000000..57f3e3a
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block/text-block.component.ts
@@ -0,0 +1,93 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild} from "@angular/core";
+import {ITextblockError} from "../../../../features/forms/statement-editor/pipes";
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+import {addTypeToName} from "../../pipes/get-blockdata-array";
+
+@Component({
+    selector: "app-text-block",
+    templateUrl: "./text-block.component.html",
+    styleUrls: ["./text-block.component.scss"],
+    changeDetection: ChangeDetectionStrategy.OnPush
+})
+export class TextBlockComponent {
+
+    @Input()
+    public appErrors: ITextblockError[] = [];
+
+    @Input()
+    public appShowNewLine = true;
+
+    @Input()
+    public appTitle: string;
+
+    @Input()
+    public appType: "block" | "newline" | "pagebreak" | "text";
+
+    @Input()
+    public appShortMode = false;
+
+    @Input()
+    public appTextBlockData: ITextBlockRenderItem[] = [];
+
+    @Input()
+    public appShowClose = false;
+
+    @Input()
+    public appBlockText;
+
+    @Output()
+    public appTextInput = new EventEmitter<void>();
+
+    @Output()
+    public appNewLine = new EventEmitter<string>();
+
+    @Output()
+    public appButtonPress = new EventEmitter<void>();
+
+    @Output()
+    public appValueChange = new EventEmitter<{ name: string, newValue: string }>();
+
+    @Output()
+    public appChangeText = new EventEmitter<string>();
+
+    @ViewChild("inputElement") inputElement: ElementRef;
+
+    public editText = false;
+
+    public trackByIndex = (index: number) => index;
+
+    public addNewLineAfter() {
+        this.appNewLine.emit(this.appTitle);
+    }
+
+    public valueChange(name: string, newValue: string, type: string) {
+        this.appValueChange.emit({name: addTypeToName(name, type), newValue});
+    }
+
+    public convertToTextInput() {
+        this.appTextInput.emit();
+        this.editText = true;
+    }
+
+    public onInput(value: string) {
+        this.appChangeText.emit(value);
+    }
+
+    public revert() {
+        this.appChangeText.emit(this.appType === "text" ? "" : undefined);
+        this.editText = false;
+    }
+}
diff --git a/src/app/shared/text-block/components/text-block/text-block.stories.ts b/src/app/shared/text-block/components/text-block/text-block.stories.ts
new file mode 100644
index 0000000..d7a8643
--- /dev/null
+++ b/src/app/shared/text-block/components/text-block/text-block.stories.ts
@@ -0,0 +1,48 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {TranslateModule} from "@ngx-translate/core";
+import {boolean, text, withKnobs} from "@storybook/addon-knobs";
+import {moduleMetadata, storiesOf} from "@storybook/angular";
+import {I18nModule} from "../../../../core/i18n";
+import {TextBlockModule} from "../../text-block.module";
+
+storiesOf("Shared", module)
+    .addDecorator(withKnobs)
+    .addDecorator(moduleMetadata({
+        imports: [
+            TextBlockModule,
+            TranslateModule,
+            I18nModule
+        ]
+    }))
+    .add("TextBlockComponent", () => ({
+        template: `
+            <div style="padding: 1em;">
+                <app-text-block [appTextBlockData]="[{type: 'text', value: text}, {type: 'input', value: 'input'}]"
+                                [appTitle]="title"
+                                [appType]="'block'"
+                                [appShowNewLine]="showNewLine"
+                                [appErrors]="error ? [{message: 'Muss platziert werden nach:', ids: ['1', '2']}] : undefined"
+                                [appShortMode]="shortMode">
+                </app-text-block>
+            </div>
+        `,
+        props: {
+            title: text("Titel", "Textbaustein 1.0"),
+            text: text("Text", "Hier steht ein Beispieltext"),
+            error: boolean("Show error", false),
+            showNewLine: boolean("Show new line button", true),
+            shortMode: boolean("Shorten block to 2 lines", false),
+        }
+    }));
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/text-block/components/text-replacement/index.ts
similarity index 92%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/text-block/components/text-replacement/index.ts
index 2e6e007..7428ae4 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/text-block/components/text-replacement/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./text-replacement.component";
diff --git a/src/app/shared/text-block/components/text-replacement/text-replacement.component.html b/src/app/shared/text-block/components/text-replacement/text-replacement.component.html
new file mode 100644
index 0000000..ca1e3d7
--- /dev/null
+++ b/src/app/shared/text-block/components/text-replacement/text-replacement.component.html
@@ -0,0 +1,35 @@
+<!-------------------------------------------------------------------------------
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ -------------------------------------------------------------------------------->
+
+<div (click)="onClick()" *ngIf="!appEditable" class="editable-text">
+  {{!!appValue && appValue !== "" ? appValue : appPlaceholder}}
+  <mat-icon *ngIf="appType === 'input'" class="editable-text--icon">edit</mat-icon>
+  <mat-icon *ngIf="appType === 'select'" class="editable-text--icon">arrow_drop_down</mat-icon>
+  <mat-icon *ngIf="appType === 'date'" class="editable-text--icon">today</mat-icon>
+</div>
+
+<input #inputElement (focusout)="onFocusOut()" (input)="inputValue(inputElement.value)"
+       *ngIf="appType === 'input'" [class.hidden]="!appEditable"
+       value="{{appValue}}"/>
+
+<app-date-control #dateElement (appValueChange)="inputValue($event)" *ngIf="appType === 'date'"
+                  [appValue]="appValue" [class.hidden]="!appEditable"
+                  class="openk-info"></app-date-control>
+
+<app-select #selectElement (appValueChange)="inputValue($event)" *ngIf="appType === 'select'"
+            [appOptions]="appOptions | stringsToOptions" [appValue]="appValue"
+            [class.hidden]="!appEditable"></app-select>
+
+
+
+
diff --git a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.scss b/src/app/shared/text-block/components/text-replacement/text-replacement.component.scss
similarity index 69%
rename from src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.scss
rename to src/app/shared/text-block/components/text-replacement/text-replacement.component.scss
index ac39661..a77d583 100644
--- a/src/app/pages/dashboard/components/dashboard-item/dashboard-item.component.scss
+++ b/src/app/shared/text-block/components/text-replacement/text-replacement.component.scss
@@ -11,19 +11,21 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-@import "openk.styles";
+@import "../../../../../styles/openk.styles";
 
-.dashboard-item-header-actions {
+.editable-text {
   display: inline-flex;
-  margin-left: auto;
-
-  & > * {
-    margin-left: 0.5em;
-  }
+  background-color: $openk-background-highlight;
+  cursor: pointer;
 }
 
-.dashboard-item-body {
-  padding: 1em;
-  display: flex;
-  flex-flow: column;
+.editable-text--icon {
+  height: initial;
+  width: initial;
+  font-size: 1em;
+  margin: auto;
+}
+
+.hidden {
+  display: none;
 }
diff --git a/src/app/shared/text-block/components/text-replacement/text-replacement.component.spec.ts b/src/app/shared/text-block/components/text-replacement/text-replacement.component.spec.ts
new file mode 100644
index 0000000..4a91bc3
--- /dev/null
+++ b/src/app/shared/text-block/components/text-replacement/text-replacement.component.spec.ts
@@ -0,0 +1,57 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {TextBlockModule} from "../../text-block.module";
+import {TextReplacementComponent} from "./text-replacement.component";
+
+describe("TextReplacementComponent", () => {
+    let component: TextReplacementComponent;
+    let fixture: ComponentFixture<TextReplacementComponent>;
+
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                TextBlockModule
+            ]
+        }).compileComponents();
+    }));
+
+    beforeEach(() => {
+        fixture = TestBed.createComponent(TextReplacementComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it("should be created", () => {
+        expect(component).toBeTruthy();
+    });
+
+    it("should emit appValueChange when the value was changed with the new set value", () => {
+        spyOn(component.appValueChange, "emit").and.callThrough();
+        component.inputValue("TestValue");
+        expect(component.appValueChange.emit).toHaveBeenCalledWith("TestValue");
+    });
+
+    it("should set appEditable to true on click on the element", () => {
+        component.appEditable = false;
+        component.onClick();
+        expect(component.appEditable).toBeTrue();
+    });
+
+    it("should set appEditable to false when input element loses focus (or date, or select)", () => {
+        component.appEditable = true;
+        component.onFocusOut();
+        expect(component.appEditable).toBeFalse();
+    });
+});
diff --git a/src/app/shared/text-block/components/text-replacement/text-replacement.component.ts b/src/app/shared/text-block/components/text-replacement/text-replacement.component.ts
new file mode 100644
index 0000000..bbbe7be
--- /dev/null
+++ b/src/app/shared/text-block/components/text-replacement/text-replacement.component.ts
@@ -0,0 +1,67 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild} from "@angular/core";
+
+@Component({
+    selector: "app-text-replacement",
+    templateUrl: "./text-replacement.component.html",
+    styleUrls: ["./text-replacement.component.scss"]
+})
+export class TextReplacementComponent {
+
+    @Input()
+    public appEditable = false;
+
+    @Input()
+    public appType: string;
+
+    @Input()
+    public appValue: string;
+
+    @Input()
+    public appPlaceholder: string;
+
+    @Input()
+    public appOptions: string[] = [];
+
+    @ViewChild("inputElement") inputElement: ElementRef;
+
+    @ViewChild("dateElement") dateElement: ElementRef;
+
+    @ViewChild("selectElement") selectElement: ElementRef;
+
+    @Output()
+    public appValueChange = new EventEmitter<string>();
+
+    public constructor(private changeDetectorRef: ChangeDetectorRef) {
+    }
+
+    public async onClick() {
+        this.appEditable = true;
+        this.changeDetectorRef.detectChanges();
+        switch (this.appType) {
+            case "input":
+                this.inputElement.nativeElement.focus();
+                break;
+        }
+    }
+
+    public onFocusOut() {
+        this.appEditable = false;
+    }
+
+    public inputValue(value: string) {
+        this.appValueChange.emit(value);
+    }
+}
diff --git a/src/app/shared/select/index.ts b/src/app/shared/text-block/index.ts
similarity index 90%
rename from src/app/shared/select/index.ts
rename to src/app/shared/text-block/index.ts
index 379f4ab..7d7bff9 100644
--- a/src/app/shared/select/index.ts
+++ b/src/app/shared/text-block/index.ts
@@ -11,8 +11,8 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
+export * from "./model";
 export * from "./components";
 export * from "./pipes";
 
-export * from "./ISelectOption";
-export * from "./select.module";
+export * from "./text-block.module";
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/text-block/model/IExtendedTextBlockModel.ts
similarity index 74%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/shared/text-block/model/IExtendedTextBlockModel.ts
index fc6c436..495d16f 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/text-block/model/IExtendedTextBlockModel.ts
@@ -11,7 +11,8 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+import {IAPITextBlockModel, TAPITextArrangementItemType} from "../../../core";
+
+export interface IExtendedTextBlockModel extends IAPITextBlockModel {
+    type?: TAPITextArrangementItemType;
 }
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/text-block/model/ITextBlockRenderItem.ts
similarity index 81%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/shared/text-block/model/ITextBlockRenderItem.ts
index fc6c436..3cac859 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/text-block/model/ITextBlockRenderItem.ts
@@ -11,7 +11,9 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+export interface ITextBlockRenderItem {
+    type: string;
+    value: string;
+    options?: string[];
+    placeholder?: string;
 }
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/text-block/model/index.ts
similarity index 92%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/text-block/model/index.ts
index 2e6e007..640d553 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/text-block/model/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./IExtendedTextBlockModel";
diff --git a/src/app/shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe.spec.ts b/src/app/shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe.spec.ts
new file mode 100644
index 0000000..2bc6223
--- /dev/null
+++ b/src/app/shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe.spec.ts
@@ -0,0 +1,50 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+import {CombineBlockdataTextPipe} from "./combine-blockdata-text.pipe";
+
+describe("CombineBlockdataTextkPipe", () => {
+
+    const pipe = new CombineBlockdataTextPipe();
+
+    it("should return empty array for missing input (undefined/null)", () => {
+        let result = pipe.transform(undefined);
+        expect(result).toEqual([]);
+
+        result = pipe.transform(null);
+        expect(result).toEqual([]);
+    });
+
+    it("should return a new array combining the entries of type text", () => {
+        const input: ITextBlockRenderItem[] = [
+            {type: "newline", value: ""},
+            {type: "text", value: "first-text"},
+            {type: "text", value: "second-text"},
+            {type: "pagebreak", value: ""},
+            {type: "text", value: "third-text"},
+            {type: "select", value: "second-text", options: ["Option 1", "Option 2"], placeholder: "placeholder"},
+            {type: "text", value: "fourth-text"}
+        ];
+        const expectedResult: ITextBlockRenderItem[] = [
+            {type: "newline", value: ""},
+            {type: "text", value: "first-text second-text"},
+            {type: "pagebreak", value: ""},
+            {type: "text", value: "third-text"},
+            {type: "select", value: "second-text", options: ["Option 1", "Option 2"], placeholder: "placeholder"},
+            {type: "text", value: "fourth-text"}
+        ];
+        const result = pipe.transform(input);
+        expect(result).toEqual(expectedResult);
+    });
+});
diff --git a/src/app/shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe.ts b/src/app/shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe.ts
new file mode 100644
index 0000000..ed3b4c5
--- /dev/null
+++ b/src/app/shared/text-block/pipes/combine-blockdata-text/combine-blockdata-text.pipe.ts
@@ -0,0 +1,47 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Pipe, PipeTransform} from "@angular/core";
+
+import {arrayJoin} from "../../../../util/store";
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+
+@Pipe({
+    name: "combineBlockdataText"
+})
+export class CombineBlockdataTextPipe implements PipeTransform {
+
+    public transform(blockData: ITextBlockRenderItem[]): ITextBlockRenderItem[] {
+        const result: ITextBlockRenderItem[] = [];
+        let text = "";
+        for (const blockElement of arrayJoin(blockData)) {
+            if (blockElement.type === "text") {
+                text += (text !== "" ? " " : "") + blockElement.value;
+            }
+            const isLastElement: boolean = blockElement === blockData.slice(-1)[0];
+
+            if (text !== "" && (isLastElement || blockElement.type !== "text")) {
+                result.push({
+                    type: "text",
+                    value: text
+                });
+                text = "";
+            }
+
+            if (blockElement.type !== "text") {
+                result.push(blockElement);
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/text-block/pipes/get-blockdata-array/IReplacement.ts
similarity index 87%
rename from src/app/shared/select/ISelectOption.ts
rename to src/app/shared/text-block/pipes/get-blockdata-array/IReplacement.ts
index fc6c436..9106d8e 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/IReplacement.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+export interface IReplacement {
+    separator: RegExp;
+    type: string;
 }
diff --git a/src/app/shared/text-block/pipes/get-blockdata-array/block-data-helper.ts b/src/app/shared/text-block/pipes/get-blockdata-array/block-data-helper.ts
new file mode 100644
index 0000000..8acb262
--- /dev/null
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/block-data-helper.ts
@@ -0,0 +1,121 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextBlockModel} from "../../../../core/api/text";
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+import {IReplacement} from "./IReplacement";
+
+export const replacements: IReplacement[] = [
+    {separator: /(<f:[A-Za-z0-9_\\-]+>)/g, type: "input"},
+    {separator: /(<d:[A-Za-z0-9_\\-]+>)/g, type: "date"},
+    {separator: /(<s:[A-Za-z0-9_\\-]+>)/g, type: "select"},
+    {separator: /(<t:[A-Za-z0-9_\\-]+>)/g, type: "text-fill"}
+];
+
+export const alwaysReplace: IReplacement[] = [
+    {separator: /(\n)/, type: "newline"}
+];
+
+export function textToBlockDataArray(
+    blockModel: IAPITextBlockModel,
+    placeholderValues: { [key: string]: string },
+    replacementTexts: { [key: string]: string },
+    selectOptions: { [key: string]: string[] },
+    replace: boolean = true): ITextBlockRenderItem[] {
+
+    const whatToReplace: IReplacement[] = replace ? [...alwaysReplace, ...replacements]
+        : [...alwaysReplace, ...replacements.map((_) => ({..._, type: "highlight-text"}))];
+
+    const blockData: ITextBlockRenderItem[] = [{value: blockModel ? blockModel.text : "", type: "text"}];
+
+    return replaceTags(blockData, whatToReplace, placeholderValues, replacementTexts, selectOptions);
+}
+
+export function replaceTags(inputArray: ITextBlockRenderItem[] = [],
+                            replaceWith: IReplacement[] = [],
+                            placeholderValues?: { [key: string]: string },
+                            replacementTexts?: { [key: string]: string },
+                            selectOptions?: { [key: string]: string[] }) {
+
+    let blockData: ITextBlockRenderItem[] = inputArray;
+    for (const replacement of replaceWith) {
+        const arrays: ITextBlockRenderItem[] = [];
+        for (const textElement of blockData) {
+            if (textElement.type === "text") {
+                arrays.push(
+                    ...replaceBySeparator(
+                        textElement.value,
+                        replacement.separator,
+                        replacement.type,
+                        placeholderValues,
+                        replacementTexts,
+                        selectOptions
+                    ));
+            } else {
+                arrays.push(textElement);
+            }
+        }
+        blockData = [...arrays];
+    }
+    return blockData;
+}
+
+export function replaceBySeparator(
+    inputValue: string,
+    separator: string | RegExp,
+    replaceType: string,
+    placeholderValues?: { [key: string]: string },
+    replacementTexts?: { [key: string]: string },
+    selectOptions?: { [key: string]: string[] }): ITextBlockRenderItem[] {
+
+    const splitBySeparator: string[] = inputValue.split(separator);
+    const blockData: ITextBlockRenderItem[] = [];
+
+    for (const renderItem of splitBySeparator) {
+        const isText: boolean = !(new RegExp(separator)).test(renderItem);
+        const value: string = isText ? renderItem
+            : renderItem.replace(/(<[fdts]:)/, "")
+                .replace(">", "")
+                .replace("\n", "");
+        let placeholder: string = placeholderValues ? placeholderValues[renderItem] : undefined;
+        if (replaceType === "text-fill") {
+            placeholder = replacementTexts ? replacementTexts[value] : undefined;
+        }
+
+        if (value !== "" || !isText) {
+            blockData.push({
+                value,
+                type: isText ? "text" : replaceType,
+                placeholder,
+                options: (!isText && replaceType === "select" && !!selectOptions) ? selectOptions[value] : undefined
+            });
+        }
+
+    }
+    return blockData;
+}
+
+export function addTypeToName(name: string, type: string) {
+    let typeIdentifier = "";
+    if (type === "input") {
+        typeIdentifier = "f";
+    }
+    if (type === "date") {
+        typeIdentifier = "d";
+    }
+    if (type === "select") {
+        typeIdentifier = "s";
+    }
+
+    return `<${typeIdentifier}:${name}>`;
+}
diff --git a/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-arrangement.pipe.spec.ts b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-arrangement.pipe.spec.ts
new file mode 100644
index 0000000..810a666
--- /dev/null
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-arrangement.pipe.spec.ts
@@ -0,0 +1,178 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextArrangementItemModel, IAPITextBlockModel} from "../../../../core/api/text";
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+import {GetBlockDataFromArrangementPipe} from "./get-blockdata-array-from-arrangement.pipe";
+
+
+describe("GetBlockDataFromArrangementPipe", () => {
+
+    const pipe = new GetBlockDataFromArrangementPipe();
+
+    it("should return empty array for missing arrangement and blockmodel values", () => {
+        let result = pipe.transform(
+            undefined, undefined, undefined, undefined, undefined);
+        expect(result).toEqual([]);
+        result = pipe.transform(
+            null, null, null, null, null);
+        expect(result).toEqual([]);
+    });
+
+    it("should return one block with type text and the replacement as value when set", () => {
+
+        const arrangement: IAPITextArrangementItemModel = {
+            type: "block",
+            placeholderValues: {},
+            textblockId: "textblockId"
+        };
+
+        const blockModel: IAPITextBlockModel = {
+            id: "textblockId",
+            text: "text",
+            excludes: [],
+            requires: []
+        };
+
+        let result = pipe.transform(
+            arrangement, blockModel, undefined, undefined, undefined);
+        expect(JSON.parse(JSON.stringify(result))).toEqual([{type: "text", value: "text"}]);
+
+        result = pipe.transform(
+            {...arrangement, replacement: "replacement-text"}, blockModel, undefined, undefined, undefined);
+        expect(JSON.parse(JSON.stringify(result))).toEqual([{type: "text", value: "replacement-text"}]);
+    });
+
+    it("should return empty array for newline and pagebreak blocks so no text is displayed for those", () => {
+        const arrangement: IAPITextArrangementItemModel = {
+            type: "block",
+            placeholderValues: {}
+        };
+
+        let result = pipe.transform(
+            {...arrangement, type: "newline"}, undefined, undefined, undefined, undefined);
+        expect(JSON.parse(JSON.stringify(result))).toEqual([]);
+
+        result = pipe.transform(
+            {...arrangement, type: "pagebreak"}, undefined, undefined, undefined, undefined);
+        expect(JSON.parse(JSON.stringify(result))).toEqual([]);
+
+        result = pipe.transform(
+            {...arrangement, type: "text"}, undefined, undefined, undefined, undefined);
+        expect(JSON.parse(JSON.stringify(result))).toEqual([]);
+    });
+
+    describe("should replace textmarkers <>", () => {
+        const arrangement: IAPITextArrangementItemModel = {
+            type: "block",
+            placeholderValues: {},
+            textblockId: "textblockId"
+        };
+
+        const blockModel: IAPITextBlockModel = {
+            id: "textblockId",
+            text: "this is a test <f:freetext><t:replacementtext><s:select><d:date> and more text afterwards",
+            excludes: [],
+            requires: []
+        };
+
+        it("should split up textblockmodel text content into the different types and return them as array", () => {
+
+            const expectedResult: ITextBlockRenderItem[] = [
+                {
+                    type: "text",
+                    value: "this is a test "
+                },
+                {
+                    type: "input",
+                    value: "freetext"
+                },
+                {
+                    type: "text-fill",
+                    value: "replacementtext"
+                },
+                {
+                    type: "select",
+                    value: "select"
+                },
+                {
+                    type: "date",
+                    value: "date"
+                },
+                {
+                    type: "text",
+                    value: " and more text afterwards"
+                }
+            ];
+
+            const result = pipe.transform(
+                arrangement, blockModel, undefined, undefined, undefined);
+            expect(JSON.parse(JSON.stringify(result))).toEqual(expectedResult);
+        });
+
+        it("should set the values correctly for the different types of display blocks", () => {
+
+            const placeholderValues: { [key: string]: string } = {
+                "<f:freetext>": "freeTextValue",
+                "<s:select>": "Option 1",
+                "<d:date>": "07-08-2020"
+            };
+
+            const replacementTexts: { [key: string]: string } = {
+                replacementtext: "replaced"
+            };
+
+            const selects: { [key: string]: string[] } = {
+                select: ["Option 1", "Option 2"]
+            };
+
+            const expectedResult: ITextBlockRenderItem[] = [
+                {
+                    type: "text",
+                    value: "this is a test "
+                },
+                {
+                    type: "input",
+                    value: "freetext",
+                    placeholder: "freeTextValue"
+                },
+                {
+                    type: "text-fill",
+                    value: "replacementtext",
+                    placeholder: "replaced"
+                },
+                {
+                    type: "select",
+                    value: "select",
+                    placeholder: "Option 1",
+                    options: ["Option 1", "Option 2"]
+                },
+                {
+                    type: "date",
+                    value: "date",
+                    placeholder: "07-08-2020"
+                },
+                {
+                    type: "text",
+                    value: " and more text afterwards"
+                }
+            ];
+
+            const result = pipe.transform(
+                arrangement, blockModel, placeholderValues, replacementTexts, selects);
+            expect(JSON.parse(JSON.stringify(result))).toEqual(expectedResult);
+        });
+    });
+
+});
+
diff --git a/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-arrangement.pipe.ts b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-arrangement.pipe.ts
new file mode 100644
index 0000000..c6bc1a7
--- /dev/null
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-arrangement.pipe.ts
@@ -0,0 +1,43 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Pipe, PipeTransform} from "@angular/core";
+import {IAPITextArrangementItemModel, IAPITextBlockModel} from "../../../../core/api/text";
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+
+import {alwaysReplace, replaceTags, textToBlockDataArray} from "./block-data-helper";
+import {IReplacement} from "./IReplacement";
+
+@Pipe({
+    name: "getBlockDataFromArrangement"
+})
+export class GetBlockDataFromArrangementPipe implements PipeTransform {
+
+    public transform(textArrangement: IAPITextArrangementItemModel,
+                     blockModel: IAPITextBlockModel,
+                     placeHolderValues: { [key: string]: string },
+                     replacementTexts: { [key: string]: string },
+                     selects: { [key: string]: string[] }): ITextBlockRenderItem[] {
+
+        if (textArrangement?.replacement != null) {
+            const whatToReplace: IReplacement[] = [...alwaysReplace];
+            const blockData: ITextBlockRenderItem[] = [{value: textArrangement.replacement, type: "text"}];
+            return replaceTags(blockData, whatToReplace, placeHolderValues, replacementTexts, selects);
+        }
+        if (textArrangement?.type === "pagebreak" || textArrangement?.type === "newline") {
+            return [];
+        }
+
+        return textToBlockDataArray(blockModel, placeHolderValues, replacementTexts, selects);
+    }
+}
diff --git a/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-block.pipe.spec.ts b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-block.pipe.spec.ts
new file mode 100644
index 0000000..12aaaa3
--- /dev/null
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-block.pipe.spec.ts
@@ -0,0 +1,71 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPITextBlockModel} from "../../../../core/api/text";
+import {ITextBlockRenderItem} from "../../model/ITextBlockRenderItem";
+import {GetBlockDataFromBlockModelPipe} from "./get-blockdata-array-from-block.pipe";
+
+
+describe("GetBlockDataFromBlockModelPipe", () => {
+
+    const pipe = new GetBlockDataFromBlockModelPipe();
+
+    const blockModel: IAPITextBlockModel = {
+        id: "textblockId",
+        text: "this is a test <f:freetext><t:replacementtext><s:select><d:date> and more text afterwards",
+        excludes: [],
+        requires: []
+    };
+
+    it("should return empty array for missing blockmodel (undefined/null)", () => {
+        let result = pipe.transform(undefined);
+        expect(result).toEqual([]);
+
+        result = pipe.transform(null);
+        expect(result).toEqual([]);
+    });
+
+    it("should split up textblockmodel text content into the different types and return them as array", () => {
+
+        const expectedResult: ITextBlockRenderItem[] = [
+            {
+                type: "text",
+                value: "this is a test "
+            },
+            {
+                type: "highlight-text",
+                value: "freetext"
+            },
+            {
+                type: "highlight-text",
+                value: "replacementtext"
+            },
+            {
+                type: "highlight-text",
+                value: "select"
+            },
+            {
+                type: "highlight-text",
+                value: "date"
+            },
+            {
+                type: "text",
+                value: " and more text afterwards"
+            }
+        ];
+
+        const result = pipe.transform(blockModel);
+        expect(JSON.parse(JSON.stringify(result))).toEqual(expectedResult);
+    });
+
+});
diff --git a/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-block.pipe.ts b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-block.pipe.ts
new file mode 100644
index 0000000..a07e312
--- /dev/null
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/get-blockdata-array-from-block.pipe.ts
@@ -0,0 +1,26 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Pipe, PipeTransform} from "@angular/core";
+import {IAPITextBlockModel} from "../../../../core/api/text";
+import {textToBlockDataArray} from "./block-data-helper";
+
+@Pipe({
+    name: "getBlockDataFromBlockModel"
+})
+export class GetBlockDataFromBlockModelPipe implements PipeTransform {
+
+    public transform(blockModel: IAPITextBlockModel): Array<{ value: string, type: string, placeholder?: string, options?: string[] }> {
+        return blockModel ? textToBlockDataArray(blockModel, undefined, undefined, undefined, false) : [];
+    }
+}
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/shared/text-block/pipes/get-blockdata-array/index.ts
similarity index 78%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/shared/text-block/pipes/get-blockdata-array/index.ts
index fc6c436..447a344 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/shared/text-block/pipes/get-blockdata-array/index.ts
@@ -11,7 +11,6 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
-}
+export * from "./get-blockdata-array-from-arrangement.pipe";
+export * from "./get-blockdata-array-from-block.pipe";
+export * from "./block-data-helper";
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/shared/text-block/pipes/index.ts
similarity index 93%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/shared/text-block/pipes/index.ts
index 2e6e007..94d6c20 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/shared/text-block/pipes/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./get-blockdata-array";
diff --git a/src/app/shared/text-block/text-block.module.ts b/src/app/shared/text-block/text-block.module.ts
new file mode 100644
index 0000000..19c1730
--- /dev/null
+++ b/src/app/shared/text-block/text-block.module.ts
@@ -0,0 +1,67 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {DragDropModule} from "@angular/cdk/drag-drop";
+import {CommonModule} from "@angular/common";
+import {NgModule} from "@angular/core";
+import {MatButtonModule} from "@angular/material/button";
+import {MatIconModule} from "@angular/material/icon";
+import {TranslateModule} from "@ngx-translate/core";
+import {DateControlModule} from "../controls/date-control";
+import {SelectModule} from "../controls/select";
+import {TextInputFieldModule} from "../controls/text-field";
+import {CollapsibleModule} from "../layout/collapsible";
+import {GlobalClassToggleModule} from "../layout/global-class-toggle";
+import {SharedPipesModule} from "../pipes";
+import {TextBlockSelectComponent} from "./components/editor-textblock-select";
+import {TextBlockComponent} from "./components/text-block";
+import {TextBlocksListComponent} from "./components/text-block-list";
+import {TextReplacementComponent} from "./components/text-replacement";
+import {GetBlockDataFromArrangementPipe, GetBlockDataFromBlockModelPipe} from "./pipes/get-blockdata-array";
+
+@NgModule({
+    imports: [
+        CommonModule,
+        MatIconModule,
+        CollapsibleModule,
+        SelectModule,
+        DateControlModule,
+        DragDropModule,
+        SharedPipesModule,
+        TranslateModule,
+        GlobalClassToggleModule,
+        TranslateModule,
+        MatButtonModule,
+        TextInputFieldModule
+    ],
+    declarations: [
+        TextBlockComponent,
+        TextBlockSelectComponent,
+        TextBlocksListComponent,
+        TextReplacementComponent,
+        GetBlockDataFromArrangementPipe,
+        GetBlockDataFromBlockModelPipe
+    ],
+    exports: [
+        TextBlockComponent,
+        TextBlockSelectComponent,
+        TextBlocksListComponent,
+        GetBlockDataFromArrangementPipe,
+        GetBlockDataFromBlockModelPipe,
+        TextBlocksListComponent,
+        TextReplacementComponent
+    ]
+})
+export class TextBlockModule {
+
+}
diff --git a/src/app/store/attachments/actions/attachments.actions.ts b/src/app/store/attachments/actions/attachments.actions.ts
index 47c8358..49cca63 100644
--- a/src/app/store/attachments/actions/attachments.actions.ts
+++ b/src/app/store/attachments/actions/attachments.actions.ts
@@ -13,16 +13,20 @@
 
 import {createAction, props} from "@ngrx/store";
 import {IAPIAttachmentModel} from "../../../core/api";
-import {IAttachmentError} from "../model";
+import {IAttachmentError, IAttachmentFormValue, IAttachmentWithTags} from "../model";
 
 export const fetchAttachmentsAction = createAction(
     "[Details/Edit] Fetch attachments",
     props<{ statementId: number }>()
 );
 
-export const addOrRemoveAttachmentsAction = createAction(
+export const submitAttachmentFormAction = createAction(
     "[Edit/Details] Add or remove attachments",
-    props<{ statementId: number, taskId: string, add?: File[], remove?: number[] }>()
+    props<{
+        statementId: number,
+        taskId: string,
+        value?: IAttachmentFormValue;
+    }>()
 );
 
 export const addAttachmentErrorAction = createAction(
@@ -30,7 +34,7 @@
     props<{
         statementId: number,
         taskId: string,
-        addError: IAttachmentError<File>[],
+        addError: IAttachmentError<IAttachmentWithTags<File>>[],
         removeError: IAttachmentError<number>[]
     }>()
 );
diff --git a/src/app/store/attachments/attachments-store.module.ts b/src/app/store/attachments/attachments-store.module.ts
index eaa5059..e857630 100644
--- a/src/app/store/attachments/attachments-store.module.ts
+++ b/src/app/store/attachments/attachments-store.module.ts
@@ -15,15 +15,14 @@
 import {EffectsModule} from "@ngrx/effects";
 import {StoreModule} from "@ngrx/store";
 import {ATTACHMENTS_NAME, ATTACHMENTS_REDUCER} from "./attachments-reducers.token";
-import {AddOrRemoveAttachmentsEffect} from "./effects/add-or-remove";
-import {FetchAttachmentsEffect} from "./effects/fetch";
+import {FetchAttachmentsEffect, SubmitAttachmentsEffect} from "./effects";
 
 @NgModule({
     imports: [
         StoreModule.forFeature(ATTACHMENTS_NAME, ATTACHMENTS_REDUCER),
         EffectsModule.forFeature([
-            AddOrRemoveAttachmentsEffect,
-            FetchAttachmentsEffect
+            FetchAttachmentsEffect,
+            SubmitAttachmentsEffect
         ])
     ]
 })
diff --git a/src/app/store/attachments/effects/add-or-remove/index.ts b/src/app/store/attachments/effects/add-or-remove/index.ts
deleted file mode 100644
index 8a74c8f..0000000
--- a/src/app/store/attachments/effects/add-or-remove/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./add-or-remove-attachments.effect";
diff --git a/src/app/store/attachments/effects/fetch/fetch-attachments.effect.spec.ts b/src/app/store/attachments/effects/fetch/fetch-attachments.effect.spec.ts
new file mode 100644
index 0000000..95aca3c
--- /dev/null
+++ b/src/app/store/attachments/effects/fetch/fetch-attachments.effect.spec.ts
@@ -0,0 +1,99 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {TestBed} from "@angular/core/testing";
+import {provideMockActions} from "@ngrx/effects/testing";
+import {Action} from "@ngrx/store";
+import {Observable, of, Subscription} from "rxjs";
+import {IAPIAttachmentModel, SPA_BACKEND_ROUTE} from "../../../../core";
+import {fetchAttachmentsAction, setAttachmentsAction} from "../../actions";
+import {FetchAttachmentsEffect} from "./fetch-attachments.effect";
+
+describe("FetchAttachmentsEffect", () => {
+
+    let actions$: Observable<Action>;
+    let httpTestingController: HttpTestingController;
+    let effect: FetchAttachmentsEffect;
+    let subscription: Subscription;
+
+    beforeEach(async () => {
+        TestBed.configureTestingModule({
+            imports: [
+                HttpClientTestingModule
+            ],
+            providers: [
+                FetchAttachmentsEffect,
+                provideMockActions(() => actions$),
+                {
+                    provide: SPA_BACKEND_ROUTE,
+                    useValue: "/"
+                }
+            ]
+        });
+        effect = TestBed.inject(FetchAttachmentsEffect);
+        httpTestingController = TestBed.inject(HttpTestingController);
+    });
+
+    afterEach(() => {
+        if (subscription != null) {
+            subscription.unsubscribe();
+        }
+    });
+
+    it("should fetch the attachments for the statement and dispatch setAttachmentsAction with the result", () => {
+        const statementId = 19;
+
+        const fetchAttachmentResult: IAPIAttachmentModel[] = [
+            {
+                id: 1,
+                name: "fileName",
+                type: "file",
+                size: 150,
+                timestamp: "2007-08-31T16:47+00:00",
+                tagIds: []
+            }
+        ];
+
+        const expectedResult = setAttachmentsAction({statementId, entities: fetchAttachmentResult});
+        const results: Action[] = [];
+
+        actions$ = of(fetchAttachmentsAction({statementId}));
+        subscription = effect.fetch$.subscribe((action) => results.push(action));
+
+        expectFetchAttachments(statementId, fetchAttachmentResult);
+        expect(results).toEqual([expectedResult]);
+        httpTestingController.verify();
+    });
+
+    it("should not dispatch any further actions when supplied with insufficient data", () => {
+        const statementId = null;
+
+        const results: Action[] = [];
+
+        actions$ = of(fetchAttachmentsAction({statementId}));
+        subscription = effect.fetch$.subscribe((action) => results.push(action));
+
+        expect(results).toEqual([]);
+        httpTestingController.verify();
+    });
+
+    function expectFetchAttachments(statementId: number, returnValue: IAPIAttachmentModel[]) {
+        const url = `/statements/${statementId}/attachments`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("GET");
+        request.flush(returnValue);
+    }
+
+});
+
diff --git a/src/app/store/attachments/effects/index.ts b/src/app/store/attachments/effects/index.ts
index 536301a..3ca0438 100644
--- a/src/app/store/attachments/effects/index.ts
+++ b/src/app/store/attachments/effects/index.ts
@@ -11,5 +11,5 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./add-or-remove";
+export * from "./submit";
 export * from "./fetch";
diff --git a/src/app/shared/select/pipes/index.ts b/src/app/store/attachments/effects/submit/index.ts
similarity index 92%
copy from src/app/shared/select/pipes/index.ts
copy to src/app/store/attachments/effects/submit/index.ts
index 2e6e007..7aebe19 100644
--- a/src/app/shared/select/pipes/index.ts
+++ b/src/app/store/attachments/effects/submit/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./selected.pipe";
+export * from "./submit-attachments.effect";
diff --git a/src/app/store/attachments/effects/submit/submit-attachments.effect.spec.ts b/src/app/store/attachments/effects/submit/submit-attachments.effect.spec.ts
new file mode 100644
index 0000000..ab6e7de
--- /dev/null
+++ b/src/app/store/attachments/effects/submit/submit-attachments.effect.spec.ts
@@ -0,0 +1,214 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {TestBed} from "@angular/core/testing";
+import {provideMockActions} from "@ngrx/effects/testing";
+import {Action} from "@ngrx/store";
+import {Observable, of, Subscription} from "rxjs";
+import {IAPIAttachmentModel, SPA_BACKEND_ROUTE} from "../../../../core";
+import {
+    addAttachmentEntityAction,
+    addAttachmentErrorAction,
+    clearFileCacheAction,
+    deleteAttachmentsAction,
+    fetchAttachmentsAction,
+    submitAttachmentFormAction
+} from "../../actions";
+import {IAttachmentWithTags} from "../../model";
+import {SubmitAttachmentsEffect} from "./submit-attachments.effect";
+
+describe("SubmitAttachmentsEffect", () => {
+
+    let actions$: Observable<Action>;
+    let httpTestingController: HttpTestingController;
+    let effect: SubmitAttachmentsEffect;
+    let subscription: Subscription;
+
+    beforeEach(async () => {
+        TestBed.configureTestingModule({
+            imports: [
+                HttpClientTestingModule
+            ],
+            providers: [
+                SubmitAttachmentsEffect,
+                provideMockActions(() => actions$),
+                {
+                    provide: SPA_BACKEND_ROUTE,
+                    useValue: "/"
+                }
+            ]
+        });
+        effect = TestBed.inject(SubmitAttachmentsEffect);
+        httpTestingController = TestBed.inject(HttpTestingController);
+    });
+
+    afterEach(() => {
+        if (subscription != null) {
+            subscription.unsubscribe();
+        }
+    });
+
+    it("should not clear file cache and refresh attachments", () => {
+        const statementId = 19;
+        const taskId = "asd12";
+        const expectedResult = [
+            clearFileCacheAction({statementId}),
+            fetchAttachmentsAction({statementId})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(submitAttachmentFormAction({statementId, taskId, value: {add: [], edit: []}}));
+        subscription = effect.submit$.subscribe((action) => results.push(action));
+
+        expect(results).toEqual(expectedResult);
+    });
+
+    it("should clear file cache when no errors occurred", () => {
+        const statementId = 19;
+        const taskId = "asd12";
+        const add: IAttachmentWithTags<File>[] = [new File(["Some", "File"], "Some File")]
+            .map((_) => ({attachment: _, tags: []}));
+        const remove: number[] = [1];
+        const edit: IAttachmentWithTags<number>[] = remove
+            .map((_) => ({attachment: _, tags: [], remove: true}));
+
+        const attachmentModelResponse: IAPIAttachmentModel = {
+            id: 1,
+            name: "fileName",
+            type: "file",
+            size: 150,
+            timestamp: "2007-08-31T16:47+00:00",
+            tagIds: []
+        };
+
+        const expectedResult: Action[] = [
+            deleteAttachmentsAction({statementId, entityIds: remove}),
+            addAttachmentEntityAction({statementId, entity: attachmentModelResponse}),
+            clearFileCacheAction({statementId}),
+            fetchAttachmentsAction({statementId})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(submitAttachmentFormAction({statementId, taskId, value: {add, edit}}));
+        subscription = effect.submit$.subscribe((action) => results.push(action));
+
+        expectDeleteRequest(statementId, taskId, 1);
+        expectAddRequest(statementId, taskId, attachmentModelResponse);
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    it("should dispatch addAttachmentErrorAction if an error removing an attachment occurs", () => {
+        const statementId = 19;
+        const taskId = "asd12";
+        const add: IAttachmentWithTags<File>[] = [new File(["Some", "File"], "Some File")]
+            .map((_) => ({attachment: _, tags: [], remove: true}));
+        const remove: number[] = [1];
+        const edit: IAttachmentWithTags<number>[] = remove
+            .map((_) => ({attachment: _, tags: [], remove: true}));
+
+        const attachmentModelResponse: IAPIAttachmentModel = {
+            id: 1,
+            name: "fileName",
+            type: "file",
+            size: 150,
+            timestamp: "2007-08-31T16:47+00:00",
+            tagIds: []
+        };
+
+        const expectedResult: Action[] = [
+            addAttachmentEntityAction({statementId, entity: attachmentModelResponse}),
+            addAttachmentErrorAction({
+                statementId, taskId, addError: [],
+                removeError: [{attachment: 1, error: undefined}]
+            }),
+            fetchAttachmentsAction({statementId})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(submitAttachmentFormAction({statementId, taskId, value: {edit, add}}));
+        subscription = effect.submit$.subscribe((action) => results.push(action));
+
+        expectDeleteRequest(statementId, taskId, 1, true);
+        expectAddRequest(statementId, taskId, attachmentModelResponse);
+
+        expect(results.length).toEqual(expectedResult.length);
+        expect(results[0]).toEqual(expectedResult[0]);
+        httpTestingController.verify();
+    });
+
+    it("should dispatch addAttachmentErrorAction if an error adding an attachment occurs", () => {
+        const statementId = 19;
+        const taskId = "asd12";
+        const add: IAttachmentWithTags<File>[] = [new File(["Some", "File"], "Some File")]
+            .map((_) => ({attachment: _, tags: [], remove: true}));
+        const remove = [1];
+        const edit: IAttachmentWithTags<number>[] = remove
+            .map((_) => ({attachment: _, tags: [], remove: true}));
+
+        const attachmentModelResponse: IAPIAttachmentModel = {
+            id: 1,
+            name: "fileName",
+            type: "file",
+            size: 150,
+            timestamp: "2007-08-31T16:47+00:00",
+            tagIds: []
+        };
+
+        const expectedResult: Action[] = [
+            deleteAttachmentsAction({statementId, entityIds: remove}),
+            addAttachmentErrorAction({
+                statementId, taskId, addError: [{attachment: {attachment: add[0].attachment, tags: []}, error: undefined}],
+                removeError: []
+            }),
+            fetchAttachmentsAction({statementId})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(submitAttachmentFormAction({statementId, taskId, value: {add, edit}}));
+        subscription = effect.submit$.subscribe((action) => results.push(action));
+
+        expectDeleteRequest(statementId, taskId, 1);
+        expectAddRequest(statementId, taskId, attachmentModelResponse, true);
+
+        expect(results.length).toEqual(expectedResult.length);
+        expect(results[0]).toEqual(expectedResult[0]);
+        httpTestingController.verify();
+    });
+
+    function expectAddRequest(statementId: number, taskId: string, returnValue: IAPIAttachmentModel, error = false) {
+        const url = `/process/statements/${statementId}/task/${taskId}/attachments`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("POST");
+        if (error) {
+            request.error(new ErrorEvent("test-error"));
+        } else {
+            request.flush(returnValue);
+        }
+
+    }
+
+    function expectDeleteRequest(statementId: number, taskId: string, attachmentId: number, error = false) {
+        const url = `/process/statements/${statementId}/task/${taskId}/attachments/${attachmentId}`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("DELETE");
+        if (error) {
+            request.error(new ErrorEvent("test-error"));
+        } else {
+            request.flush("204");
+        }
+    }
+
+});
+
diff --git a/src/app/store/attachments/effects/add-or-remove/add-or-remove-attachments.effect.ts b/src/app/store/attachments/effects/submit/submit-attachments.effect.ts
similarity index 67%
rename from src/app/store/attachments/effects/add-or-remove/add-or-remove-attachments.effect.ts
rename to src/app/store/attachments/effects/submit/submit-attachments.effect.ts
index 7fe16e3..a090dcf 100644
--- a/src/app/store/attachments/effects/add-or-remove/add-or-remove-attachments.effect.ts
+++ b/src/app/store/attachments/effects/submit/submit-attachments.effect.ts
@@ -22,19 +22,20 @@
 import {
     addAttachmentEntityAction,
     addAttachmentErrorAction,
-    addOrRemoveAttachmentsAction,
     clearFileCacheAction,
     deleteAttachmentsAction,
+    fetchAttachmentsAction,
+    submitAttachmentFormAction,
 } from "../../actions";
-import {IAttachmentError} from "../../model";
+import {IAttachmentError, IAttachmentFormValue, IAttachmentWithTags} from "../../model";
 
 @Injectable({providedIn: "root"})
-export class AddOrRemoveAttachmentsEffect {
+export class SubmitAttachmentsEffect {
 
-    public addOrRemove$ = createEffect(() => this.actions.pipe(
-        ofType(addOrRemoveAttachmentsAction),
+    public submit$ = createEffect(() => this.actions.pipe(
+        ofType(submitAttachmentFormAction),
         switchMap((action) => {
-            return this.addOrRemoveAttachments(action.statementId, action.taskId, action.add, action.remove).pipe(
+            return this.submit(action.statementId, action.taskId, action.value).pipe(
                 ignoreError()
             );
         })
@@ -44,14 +45,19 @@
 
     }
 
-    public addOrRemoveAttachments(
+    public submit(
         statementId: number,
         taskId: string,
-        add?: File[],
-        remove?: number[]
+        value: IAttachmentFormValue
     ): Observable<Action> {
+        const add = arrayJoin(value?.add);
+        const remove = arrayJoin(value?.edit)
+            .filter((_) => _.remove)
+            .map((_) => _.attachment);
+
         const removeError: IAttachmentError<number>[] = [];
-        const addError: IAttachmentError<File>[] = [];
+        const addError: IAttachmentError<IAttachmentWithTags<File>>[] = [];
+
         let isSuccess = false;
         return concat(
             this.removeAttachments(statementId, taskId, remove, removeError),
@@ -62,6 +68,7 @@
                     of(clearFileCacheAction({statementId})) :
                     of(addAttachmentErrorAction({statementId, taskId, addError, removeError}));
             }),
+            of(fetchAttachmentsAction({statementId})),
             defer(() => isSuccess ? EMPTY : throwError([...removeError, ...addError]))
         );
     }
@@ -69,7 +76,7 @@
     public removeAttachments(
         statementId: number,
         taskId: string,
-        remove?: number[],
+        remove: number[],
         errors: IAttachmentError<number>[] = []
     ): Observable<Action> {
         const remove$s = arrayJoin(remove).map((attachmentId) => {
@@ -88,18 +95,20 @@
     public addAttachments(
         statementId: number,
         taskId: string,
-        add?: File[],
-        errors: IAttachmentError<File>[] = []
+        add: IAttachmentWithTags<File>[],
+        errors: IAttachmentError<IAttachmentWithTags<File>>[] = []
     ): Observable<Action> {
-        const add$s = arrayJoin(add).filter((file) => file instanceof File).map((file) => {
-            return this.attachmentsApiService.postAttachment(statementId, taskId, file).pipe(
-                map((entity) => addAttachmentEntityAction({statementId, entity})),
-                catchError((error) => {
-                    errors.push({attachment: file, error});
-                    return EMPTY;
-                })
-            );
-        });
+        const add$s = arrayJoin(add)
+            .filter((item) => item?.attachment instanceof File)
+            .map((item) => {
+                return this.attachmentsApiService.postAttachment(statementId, taskId, item.attachment, ...arrayJoin(item.tags)).pipe(
+                    map((entity) => addAttachmentEntityAction({statementId, entity})),
+                    catchError((error) => {
+                        errors.push({attachment: item, error});
+                        return EMPTY;
+                    })
+                );
+            });
 
         return concat(...add$s);
     }
diff --git a/src/app/store/statements/model/ENewStatementError.ts b/src/app/store/attachments/model/IAttachmentFormValue.ts
similarity index 75%
copy from src/app/store/statements/model/ENewStatementError.ts
copy to src/app/store/attachments/model/IAttachmentFormValue.ts
index 6842926..e908199 100644
--- a/src/app/store/statements/model/ENewStatementError.ts
+++ b/src/app/store/attachments/model/IAttachmentFormValue.ts
@@ -11,10 +11,12 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export enum ENewStatementError {
+import {IAttachmentWithTags} from "./IAttachmentWithTags";
 
-    "UNKNOWN_ERROR" = "new.error.unknownError",
+export interface IAttachmentFormValue {
 
-    "INVALID_FORM" = "new.error.invalidForm"
+    add?: IAttachmentWithTags<File>[];
+
+    edit?: IAttachmentWithTags<number>[];
 
 }
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/store/attachments/model/IAttachmentWithTags.ts
similarity index 83%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/store/attachments/model/IAttachmentWithTags.ts
index fc6c436..b25a992 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/store/attachments/model/IAttachmentWithTags.ts
@@ -11,7 +11,12 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+export interface IAttachmentWithTags<T> {
+
+    attachment: T;
+
+    tags: string[];
+
+    remove?: boolean;
+
 }
diff --git a/src/app/store/attachments/model/IAttachmentsStoreState.ts b/src/app/store/attachments/model/IAttachmentsStoreState.ts
index 78fd303..75431d0 100644
--- a/src/app/store/attachments/model/IAttachmentsStoreState.ts
+++ b/src/app/store/attachments/model/IAttachmentsStoreState.ts
@@ -13,12 +13,13 @@
 
 import {IAPIAttachmentModel} from "../../../core/api";
 import {TStoreEntities} from "../../../util/store";
+import {IAttachmentWithTags} from "./IAttachmentWithTags";
 
 export interface IAttachmentsStoreState {
 
     entities: TStoreEntities<IAPIAttachmentModel>;
 
-    statementFileCache?: TStoreEntities<File[]>;
+    statementFileCache?: TStoreEntities<IAttachmentWithTags<File>[]>;
 
     statementAttachments: TStoreEntities<number[]>;
 
diff --git a/src/app/store/attachments/model/index.ts b/src/app/store/attachments/model/index.ts
index 90e6922..eb2d219 100644
--- a/src/app/store/attachments/model/index.ts
+++ b/src/app/store/attachments/model/index.ts
@@ -11,5 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
+export * from "./IAttachmentFormValue";
 export * from "./IAttachmentError";
 export * from "./IAttachmentsStoreState";
+export * from "./IAttachmentWithTags";
diff --git a/src/app/store/attachments/reducers/entities/attachment-entities.reducer.spec.ts b/src/app/store/attachments/reducers/entities/attachment-entities.reducer.spec.ts
index a90ae7c..8555e0c 100644
--- a/src/app/store/attachments/reducers/entities/attachment-entities.reducer.spec.ts
+++ b/src/app/store/attachments/reducers/entities/attachment-entities.reducer.spec.ts
@@ -25,7 +25,7 @@
     };
 
     it("should set a list of attachment entities to store", () => {
-        const attachment = createAttachmentModelMock(19, [1, 9]);
+        const attachment = createAttachmentModelMock(19, "1", "9");
         const action: Action = setAttachmentsAction({
             statementId: 1919,
             entities: [attachment]
@@ -38,7 +38,7 @@
     });
 
     it("should add a single attachment entitiy to store", () => {
-        const attachment = createAttachmentModelMock(19, [1, 9]);
+        const attachment = createAttachmentModelMock(19, "1", "9");
         const action: Action = addAttachmentEntityAction({
             statementId: 1919,
             entity: attachment
diff --git a/src/app/store/attachments/reducers/statement-attachments/statement-attachments.reducer.spec.ts b/src/app/store/attachments/reducers/statement-attachments/statement-attachments.reducer.spec.ts
index 1665b2d..8b943c5 100644
--- a/src/app/store/attachments/reducers/statement-attachments/statement-attachments.reducer.spec.ts
+++ b/src/app/store/attachments/reducers/statement-attachments/statement-attachments.reducer.spec.ts
@@ -23,7 +23,7 @@
     };
 
     it("should set a list of attachment entity IDs to store", () => {
-        const attachment = createAttachmentModelMock(19, [1, 9]);
+        const attachment = createAttachmentModelMock(19, "1", "9");
         const action = setAttachmentsAction({
             statementId: 1919,
             entities: [attachment, null]
@@ -36,7 +36,7 @@
     });
 
     it("should add a single attachment ID to store", () => {
-        const attachment = createAttachmentModelMock(19, [1, 9]);
+        const attachment = createAttachmentModelMock(19, "1", "9");
         const action = addAttachmentEntityAction({
             statementId: 1919,
             entity: null
diff --git a/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.spec.ts b/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.spec.ts
index f44c8e4..153f725 100644
--- a/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.spec.ts
+++ b/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.spec.ts
@@ -12,14 +12,14 @@
  ********************************************************************************/
 
 import {Action} from "@ngrx/store";
-import {createFileMock} from "../../../../test";
+import {createAttachmentFileMock} from "../../../../test";
 import {addAttachmentErrorAction, clearFileCacheAction} from "../../actions";
 import {IAttachmentsStoreState} from "../../model";
 import {statementFileCacheReducer} from "./statement-file-cache.reducer";
 
 describe("statementFileCacheReducer", () => {
 
-    const file = createFileMock("test.pdf");
+    const file = createAttachmentFileMock("test.pdf");
 
     const initialState: IAttachmentsStoreState["statementFileCache"] = {
         1919: [file]
@@ -31,11 +31,11 @@
             taskId: "1919",
             addError: [
                 {
-                    attachment: createFileMock("File 0.pdf"),
+                    attachment: createAttachmentFileMock("File 0.pdf"),
                     error: new Error("")
                 },
                 {
-                    attachment: createFileMock("File 0.pdf"),
+                    attachment: createAttachmentFileMock("File 0.pdf"),
                     error: new Error("")
                 }
             ],
diff --git a/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.ts b/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.ts
index eadf2d5..9f52122 100644
--- a/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.ts
+++ b/src/app/store/attachments/reducers/statement-file-cache/statement-file-cache.reducer.ts
@@ -23,8 +23,7 @@
     }),
     on(addAttachmentErrorAction, (state, payload) => {
         const files = arrayJoin(payload.addError)
-            .map((error) => error.attachment)
-            .filter((file) => file instanceof File);
+            .map((error) => error.attachment);
         return setEntitiesObject(state, [files], () => payload.statementId);
     })
 );
diff --git a/src/app/store/attachments/selectors/attachments.selectors.spec.ts b/src/app/store/attachments/selectors/attachments.selectors.spec.ts
index 87ffb3e..6f8a265 100644
--- a/src/app/store/attachments/selectors/attachments.selectors.spec.ts
+++ b/src/app/store/attachments/selectors/attachments.selectors.spec.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {createAttachmentModelMock, createFileMock} from "../../../test";
+import {createAttachmentFileMock, createAttachmentModelMock} from "../../../test";
 import {IAttachmentsStoreState} from "../model";
 import {attachmentsEntitiesSelector, getStatementAttachmentsSelector, getStatementFileCacheSelector} from "./attachments.selectors";
 
@@ -30,8 +30,8 @@
         },
         statementFileCache: {
             1919: [
-                createFileMock("Test1.pdf"),
-                createFileMock("Test2.pdf")
+                createAttachmentFileMock("Test1.pdf"),
+                createAttachmentFileMock("Test2.pdf")
             ]
         }
     };
diff --git a/src/app/store/attachments/selectors/attachments.selectors.ts b/src/app/store/attachments/selectors/attachments.selectors.ts
index 6f943f6..af299a8 100644
--- a/src/app/store/attachments/selectors/attachments.selectors.ts
+++ b/src/app/store/attachments/selectors/attachments.selectors.ts
@@ -13,10 +13,10 @@
 
 import {createFeatureSelector, createSelector} from "@ngrx/store";
 import {IAPIAttachmentModel} from "../../../core/api/attachments";
-import {arrayJoin} from "../../../util/store";
+import {arrayJoin, TStoreEntities} from "../../../util/store";
 import {queryParamsIdSelector} from "../../root/selectors";
 import {ATTACHMENTS_NAME} from "../attachments-reducers.token";
-import {IAttachmentsStoreState} from "../model";
+import {IAttachmentsStoreState, IAttachmentWithTags} from "../model";
 
 export const attachmentsStoreStateSelector = createFeatureSelector<IAttachmentsStoreState>(ATTACHMENTS_NAME);
 
@@ -29,16 +29,29 @@
     attachmentsStoreStateSelector,
     attachmentsEntitiesSelector,
     queryParamsIdSelector,
-    (state, entities, statementId): IAPIAttachmentModel[] => {
+    (
+        state: IAttachmentsStoreState,
+        entities: TStoreEntities<IAPIAttachmentModel>,
+        statementId: number,
+        props: { restrictedTagIds?: string[], forbiddenTagIds?: string[] }
+    ): IAPIAttachmentModel[] => {
+        const restrictedTagIds = arrayJoin(props?.restrictedTagIds);
+        const forbiddenTagIds = arrayJoin(props?.forbiddenTagIds);
         return state?.statementAttachments == null ? [] : arrayJoin(state.statementAttachments[statementId])
-            .map((attachmentId) => entities[attachmentId]);
+            .map((attachmentId) => entities[attachmentId])
+            .filter((attachment) => {
+                return restrictedTagIds.length === 0 || attachment.tagIds.some((_) => restrictedTagIds.indexOf(_) > -1);
+            })
+            .filter((attachment) => {
+                return forbiddenTagIds.length === 0 || !attachment.tagIds.some((_) => forbiddenTagIds.indexOf(_) > -1);
+            });
     }
 );
 
 export const getStatementFileCacheSelector = createSelector(
     attachmentsStoreStateSelector,
     queryParamsIdSelector,
-    (state, id): File[] => {
+    (state, id): IAttachmentWithTags<File>[] => {
         return state?.statementFileCache == null ? [] : arrayJoin(state.statementFileCache[id]);
     }
 );
diff --git a/src/app/store/contacts/effects/fetch-details/fetch-contact-details.effect.spec.ts b/src/app/store/contacts/effects/fetch-details/fetch-contact-details.effect.spec.ts
new file mode 100644
index 0000000..0705992
--- /dev/null
+++ b/src/app/store/contacts/effects/fetch-details/fetch-contact-details.effect.spec.ts
@@ -0,0 +1,96 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {TestBed} from "@angular/core/testing";
+import {provideMockActions} from "@ngrx/effects/testing";
+import {Action} from "@ngrx/store";
+import {Observable, of, Subscription} from "rxjs";
+import {SPA_BACKEND_ROUTE} from "../../../../core";
+import {IAPIContactPersonDetails} from "../../../../core/api/contacts/IAPIContactPersonDetails";
+import {fetchContactDetailsAction, setContactEntityAction, setContactsLoadingState} from "../../actions";
+import {FetchContactDetailsEffect} from "./fetch-contact-details.effect";
+
+describe("FetchContactDetailsEffect", () => {
+
+    let actions$: Observable<Action>;
+    let httpTestingController: HttpTestingController;
+    let effect: FetchContactDetailsEffect;
+    let subscription: Subscription;
+
+    beforeEach(async () => {
+        TestBed.configureTestingModule({
+            imports: [
+                HttpClientTestingModule
+            ],
+            providers: [
+                FetchContactDetailsEffect,
+                provideMockActions(() => actions$),
+                {
+                    provide: SPA_BACKEND_ROUTE,
+                    useValue: "/"
+                }
+            ]
+        });
+        effect = TestBed.inject(FetchContactDetailsEffect);
+        httpTestingController = TestBed.inject(HttpTestingController);
+    });
+
+    afterEach(() => {
+        if (subscription != null) {
+            subscription.unsubscribe();
+        }
+    });
+
+    it("should fetch contact details and dispatch setContactEntityAction", () => {
+        const contactId = "contactId";
+
+        const fetchResult: IAPIContactPersonDetails =
+            {
+                community: "string",
+                communitySuffix: "string",
+                company: "string",
+                email: "string",
+                firstName: "string",
+                houseNumber: "string",
+                lastName: "string",
+                postCode: "string",
+                salutation: "string",
+                street: "string",
+                title: "string"
+            };
+
+        const expectedResult = [
+            setContactsLoadingState({state: {fetching: true}}),
+            setContactEntityAction({entity: {...fetchResult, id: contactId}}),
+            setContactsLoadingState({state: {fetching: false}})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(fetchContactDetailsAction({contactId}));
+        subscription = effect.fetch$.subscribe((action) => results.push(action));
+
+        expectFetchContactDetails(contactId, fetchResult);
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    function expectFetchContactDetails(contactId: string, returnValue: IAPIContactPersonDetails) {
+        const url = `/contacts/${contactId}`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("GET");
+        request.flush(returnValue);
+    }
+
+});
+
diff --git a/src/app/store/contacts/effects/search/search-contacts-effect.service.spec.ts b/src/app/store/contacts/effects/search/search-contacts-effect.service.spec.ts
new file mode 100644
index 0000000..3f81ac7
--- /dev/null
+++ b/src/app/store/contacts/effects/search/search-contacts-effect.service.spec.ts
@@ -0,0 +1,119 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {TestBed} from "@angular/core/testing";
+import {provideMockActions} from "@ngrx/effects/testing";
+import {Action} from "@ngrx/store";
+import {Observable, of, Subscription} from "rxjs";
+import {IAPIPaginationResponse, SPA_BACKEND_ROUTE} from "../../../../core";
+import {IAPIContactPerson} from "../../../../core/api/contacts/IAPIContactPerson";
+import {setContactsLoadingState, setContactsSearchAction, startContactSearchAction} from "../../actions";
+import {SearchContactsEffectService} from "./search-contacts-effect.service";
+
+describe("SearchContactsEffectService", () => {
+
+    let actions$: Observable<Action>;
+    let httpTestingController: HttpTestingController;
+    let effect: SearchContactsEffectService;
+    let subscription: Subscription;
+
+    beforeEach(async () => {
+        TestBed.configureTestingModule({
+            imports: [
+                HttpClientTestingModule
+            ],
+            providers: [
+                SearchContactsEffectService,
+                provideMockActions(() => actions$),
+                {
+                    provide: SPA_BACKEND_ROUTE,
+                    useValue: "/"
+                }
+            ]
+        });
+        effect = TestBed.inject(SearchContactsEffectService);
+        httpTestingController = TestBed.inject(HttpTestingController);
+    });
+
+    afterEach(() => {
+        if (subscription != null) {
+            subscription.unsubscribe();
+        }
+    });
+
+    it("should get the contacts using search parameters", () => {
+
+        const fetchResult: IAPIPaginationResponse<IAPIContactPerson> = {
+            content: [
+                {
+                    companyId: "string",
+                    companyName: "string",
+                    email: "string",
+                    id: "string",
+                    firstName: "string",
+                    lastName: "string"
+                }
+            ],
+            pageable: "string",
+            last: true,
+            totalPages: 1,
+            totalElements: 1,
+            size: 1,
+            number: 1,
+            numberOfElements: 1,
+            first: false,
+            sort: {
+                sorted: false,
+                unsorted: true,
+                empty: false
+            },
+            empty: false
+        };
+
+        const expectedResult = [
+            setContactsLoadingState({state: {searching: true}}),
+            setContactsSearchAction({results: fetchResult}),
+            setContactsLoadingState({state: {searching: false}})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(startContactSearchAction({options: {q: "search", page: 1}}));
+        subscription = effect.search$.subscribe((action) => results.push(action));
+
+        expectSearch(["q=search", "page=1"], fetchResult);
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    function expectSearch(urlParams: string[], returnValue: IAPIPaginationResponse<IAPIContactPerson>) {
+        let url = `/contacts`;
+        if (urlParams) {
+            url += "?";
+            let counter = 0;
+            for (const param of urlParams) {
+                if (counter !== 0) {
+                    url += "&";
+                }
+                url += param;
+                counter++;
+            }
+        }
+
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("GET");
+        request.flush(returnValue);
+    }
+
+});
+
diff --git a/src/app/store/contacts/effects/search/search-contacts-effect.service.ts b/src/app/store/contacts/effects/search/search-contacts-effect.service.ts
index b7b7af4..71969f2 100644
--- a/src/app/store/contacts/effects/search/search-contacts-effect.service.ts
+++ b/src/app/store/contacts/effects/search/search-contacts-effect.service.ts
@@ -16,9 +16,8 @@
 import {Action} from "@ngrx/store";
 import {asyncScheduler, Observable} from "rxjs";
 import {concatMap, endWith, filter, map, startWith, throttleTime} from "rxjs/operators";
-import {ContactsApiService} from "../../../../core/api/contacts";
-import {IAPISearchOptions} from "../../../../core/api/shared";
-import {ignoreError} from "../../../../util/rxjs";
+import {ContactsApiService, IAPISearchOptions} from "../../../../core";
+import {ignoreError} from "../../../../util";
 import {setContactsLoadingState, setContactsSearchAction, startContactSearchAction} from "../../actions";
 
 @Injectable({providedIn: "root"})
diff --git a/src/app/store/contacts/model/IContactsStoreState.ts b/src/app/store/contacts/model/IContactsStoreState.ts
index 4f39c4c..d3ad339 100644
--- a/src/app/store/contacts/model/IContactsStoreState.ts
+++ b/src/app/store/contacts/model/IContactsStoreState.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPIPaginationResponse} from "../../../core/api/shared";
+import {IAPIPaginationResponse} from "../../../core";
 import {TStoreEntities} from "../../../util/store";
 import {IContactEntity} from "./IContactEntity";
 import {IContactsLoadingState} from "./IContactsLoadingState";
diff --git a/src/app/store/contacts/reducers/entities/contact-entities.reducer.spec.ts b/src/app/store/contacts/reducers/entities/contact-entities.reducer.spec.ts
index 77cd562..e3d6715 100644
--- a/src/app/store/contacts/reducers/entities/contact-entities.reducer.spec.ts
+++ b/src/app/store/contacts/reducers/entities/contact-entities.reducer.spec.ts
@@ -12,8 +12,8 @@
  ********************************************************************************/
 
 
-import {IAPIPaginationResponse} from "../../../../core/api/shared";
-import {TStoreEntities} from "../../../../util/store";
+import {IAPIPaginationResponse} from "../../../../core";
+import {TStoreEntities} from "../../../../util";
 import {setContactEntityAction, setContactsSearchAction} from "../../actions";
 import {IContactEntity} from "../../model";
 import {contactEntitiesReducer} from "./contact-entities.reducer";
diff --git a/src/app/store/contacts/reducers/search/contacts-search.reducer.spec.ts b/src/app/store/contacts/reducers/search/contacts-search.reducer.spec.ts
index c1da4f1..2c2e616 100644
--- a/src/app/store/contacts/reducers/search/contacts-search.reducer.spec.ts
+++ b/src/app/store/contacts/reducers/search/contacts-search.reducer.spec.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPIPaginationResponse} from "../../../../core/api/shared";
+import {IAPIPaginationResponse} from "../../../../core";
 import {setContactsSearchAction} from "../../actions";
 import {IContactEntity} from "../../model";
 import {contactsSearchReducer} from "./contacts-search.reducer";
diff --git a/src/app/store/contacts/reducers/search/contacts-search.reducer.ts b/src/app/store/contacts/reducers/search/contacts-search.reducer.ts
index 32f6c3d..51da1bf 100644
--- a/src/app/store/contacts/reducers/search/contacts-search.reducer.ts
+++ b/src/app/store/contacts/reducers/search/contacts-search.reducer.ts
@@ -12,8 +12,8 @@
  ********************************************************************************/
 
 import {createReducer, on} from "@ngrx/store";
-import {IAPIPaginationResponse} from "../../../../core/api/shared";
-import {arrayJoin} from "../../../../util/store";
+import {IAPIPaginationResponse} from "../../../../core";
+import {arrayJoin} from "../../../../util";
 import {setContactsSearchAction} from "../../actions";
 
 export const contactsSearchReducer = createReducer<IAPIPaginationResponse<string>>(
diff --git a/src/app/store/contacts/selectors/contacts.selectors.ts b/src/app/store/contacts/selectors/contacts.selectors.ts
index fb6237c..2f23052 100644
--- a/src/app/store/contacts/selectors/contacts.selectors.ts
+++ b/src/app/store/contacts/selectors/contacts.selectors.ts
@@ -12,7 +12,7 @@
  ********************************************************************************/
 
 import {createFeatureSelector, createSelector} from "@ngrx/store";
-import {arrayJoin} from "../../../util/store";
+import {arrayJoin} from "../../../util";
 import {CONTACTS_NAME} from "../contacts-reducers.token";
 import {IContactEntity, IContactsStoreState} from "../model";
 
diff --git a/src/app/store/process/effects/claim-task.effect.spec.ts b/src/app/store/process/effects/claim-task.effect.spec.ts
new file mode 100644
index 0000000..85a5421
--- /dev/null
+++ b/src/app/store/process/effects/claim-task.effect.spec.ts
@@ -0,0 +1,132 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {TestBed} from "@angular/core/testing";
+import {Router} from "@angular/router";
+import {provideMockActions} from "@ngrx/effects/testing";
+import {Action} from "@ngrx/store";
+import {Observable, of, Subscription, timer} from "rxjs";
+import {SPA_BACKEND_ROUTE} from "../../../core";
+import {EAPIProcessTaskDefinitionKey, IAPIProcessTask} from "../../../core/api/process";
+import {claimTaskAction, deleteTaskAction, updateTaskAction} from "../actions";
+import {ClaimTaskEffect} from "./claim-task.effect";
+
+describe("ClaimTaskEffect", () => {
+
+    let actions$: Observable<Action>;
+    let httpTestingController: HttpTestingController;
+    let effect: ClaimTaskEffect;
+    let subscription: Subscription;
+    const routerSpy = {navigate: jasmine.createSpy("navigate")};
+
+    beforeEach(async () => {
+        TestBed.configureTestingModule({
+            imports: [
+                HttpClientTestingModule
+            ],
+            providers: [
+                ClaimTaskEffect,
+                provideMockActions(() => actions$),
+                {
+                    provide: SPA_BACKEND_ROUTE,
+                    useValue: "/"
+                },
+                {provide: Router, useValue: routerSpy}
+            ]
+        });
+        effect = TestBed.inject(ClaimTaskEffect);
+        httpTestingController = TestBed.inject(HttpTestingController);
+    });
+
+    afterEach(() => {
+        if (subscription != null) {
+            subscription.unsubscribe();
+        }
+    });
+
+    it("should claim the task and dispatch the updateTaskAction", async () => {
+
+        const statementId = 19;
+        const taskId = "taskId";
+
+        const fetchResult: IAPIProcessTask = {
+            statementId: 19,
+            taskId: "taskId",
+            taskDefinitionKey: EAPIProcessTaskDefinitionKey.ADD_BASIC_INFO_DATA,
+            processDefinitionKey: "string",
+            assignee: "string",
+            requiredVariables: {
+                var1: "string"
+            }
+        };
+
+        const expectedResult = [
+            updateTaskAction({task: fetchResult})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(claimTaskAction({statementId, taskId}));
+        subscription = effect.editTask$.subscribe((action) => results.push(action));
+
+        expectEditTask(statementId, taskId, fetchResult);
+        await timer(500).toPromise();
+        expect(routerSpy.navigate).toHaveBeenCalledWith(["/edit"], {queryParams: {id: statementId, taskId}});
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    it("should dispatch deleteTaskAction on error", async () => {
+
+        const statementId = 19;
+        const taskId = "taskId";
+
+        const fetchResult: IAPIProcessTask = {
+            statementId: 19,
+            taskId: "taskId",
+            taskDefinitionKey: EAPIProcessTaskDefinitionKey.ADD_BASIC_INFO_DATA,
+            processDefinitionKey: "string",
+            assignee: "string",
+            requiredVariables: {
+                var1: "string"
+            }
+        };
+
+        const expectedResult = [
+            deleteTaskAction({statementId, taskId})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(claimTaskAction({statementId, taskId}));
+        subscription = effect.editTask$.subscribe((action) => results.push(action));
+
+        expectEditTask(statementId, taskId, fetchResult, true);
+        await timer(500).toPromise();
+        expect(routerSpy.navigate).toHaveBeenCalledWith(["/edit"], {queryParams: {id: statementId, taskId}});
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    function expectEditTask(statementId: number, taskId: string, returnValue: IAPIProcessTask, error = false) {
+        const url = `/process/statements/${statementId}/task/${taskId}/claim`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("POST");
+        if (error) {
+            request.error(new ErrorEvent("test-error"));
+        } else {
+            request.flush(returnValue);
+        }
+    }
+
+});
+
diff --git a/src/app/store/process/effects/complete-task.effect.spec.ts b/src/app/store/process/effects/complete-task.effect.spec.ts
new file mode 100644
index 0000000..beb7779
--- /dev/null
+++ b/src/app/store/process/effects/complete-task.effect.spec.ts
@@ -0,0 +1,173 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing";
+import {TestBed} from "@angular/core/testing";
+import {Router} from "@angular/router";
+import {provideMockActions} from "@ngrx/effects/testing";
+import {Action} from "@ngrx/store";
+import {Observable, of, Subscription, timer} from "rxjs";
+import {SPA_BACKEND_ROUTE} from "../../../core";
+import {EAPIProcessTaskDefinitionKey, IAPIProcessTask} from "../../../core/api/process";
+import {completeTaskAction, deleteTaskAction} from "../actions";
+import {CompleteTaskEffect} from "./complete-task.effect";
+
+describe("CompleteTaskEffect", () => {
+
+    let actions$: Observable<Action>;
+    let httpTestingController: HttpTestingController;
+    let effect: CompleteTaskEffect;
+    let subscription: Subscription;
+    const routerSpy = {navigate: jasmine.createSpy("navigate")};
+
+    beforeEach(async () => {
+        TestBed.configureTestingModule({
+            imports: [
+                HttpClientTestingModule
+            ],
+            providers: [
+                CompleteTaskEffect,
+                provideMockActions(() => actions$),
+                {
+                    provide: SPA_BACKEND_ROUTE,
+                    useValue: "/"
+                },
+                {provide: Router, useValue: routerSpy}
+            ]
+        });
+        effect = TestBed.inject(CompleteTaskEffect);
+        httpTestingController = TestBed.inject(HttpTestingController);
+    });
+
+    afterEach(() => {
+        if (subscription != null) {
+            subscription.unsubscribe();
+        }
+    });
+
+    it("should claim the task and dispatch the updateTaskAction", async () => {
+
+        const statementId = 19;
+        const taskId = "taskId";
+
+        const expectedResult = [deleteTaskAction({statementId, taskId})];
+        const results: Action[] = [];
+
+        actions$ = of(completeTaskAction({statementId, taskId, variables: {}}));
+        subscription = effect.completeTask$.subscribe((action) => results.push(action));
+
+        expectCompleteTask(statementId, taskId);
+        await timer(500).toPromise();
+
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    it("should complete the task and afterwards claim it", async () => {
+
+        const statementId = 19;
+        const taskId = "taskId";
+
+        const expectedResult = [deleteTaskAction({statementId, taskId})];
+        const results: Action[] = [];
+
+        actions$ = of(completeTaskAction({statementId, taskId, variables: {}}));
+        subscription = effect.completeTask$.subscribe((action) => results.push(action));
+
+        expectCompleteTask(statementId, taskId);
+
+        await timer(500).toPromise();
+
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    it("should claim the next task", async () => {
+
+        const statementId = 19;
+        const taskId = "taskId";
+
+        const fetchResult: IAPIProcessTask[] = [
+            {
+                statementId: 19,
+                taskId: "taskId",
+                taskDefinitionKey: EAPIProcessTaskDefinitionKey.ADD_BASIC_INFO_DATA,
+                processDefinitionKey: "string",
+                assignee: "string",
+                requiredVariables: {
+                    var1: "string"
+                }
+            }
+        ];
+
+        const expectedResult = [deleteTaskAction({statementId, taskId})];
+        const results: Action[] = [];
+
+        actions$ = of(completeTaskAction({statementId, taskId, variables: {}, claimNext: true}));
+        subscription = effect.completeTask$.subscribe((action) => results.push(action));
+
+        expectCompleteTask(statementId, taskId);
+        expectGetStatement(statementId, fetchResult);
+        expectClaimTask(statementId, taskId, fetchResult[0]);
+
+        await timer(500).toPromise();
+
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    it("should follow up with the actions supplied in endWith", async () => {
+
+        const statementId = 19;
+        const taskId = "taskId";
+
+        const expectedResult = [
+            deleteTaskAction({statementId, taskId}),
+            deleteTaskAction({statementId, taskId})
+        ];
+        const results: Action[] = [];
+
+        actions$ = of(completeTaskAction({statementId, taskId, variables: {}, endWith: [deleteTaskAction({statementId, taskId})]}));
+        subscription = effect.completeTask$.subscribe((action) => results.push(action));
+
+        expectCompleteTask(statementId, taskId);
+
+        await timer(500).toPromise();
+
+        expect(results).toEqual(expectedResult);
+        httpTestingController.verify();
+    });
+
+    function expectCompleteTask(statementId: number, taskId: string) {
+        const url = `/process/statements/${statementId}/task/${taskId}/complete`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("POST");
+        request.flush({});
+    }
+
+    function expectGetStatement(statementId: number, returnValue: IAPIProcessTask[]) {
+        const url = `/process/statements/${statementId}/task`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("GET");
+        request.flush(returnValue);
+    }
+
+    function expectClaimTask(statementId: number, taskId: string, returnValue: IAPIProcessTask) {
+        const url = `/process/statements/${statementId}/task/${taskId}/claim`;
+        const request = httpTestingController.expectOne(url);
+        expect(request.request.method).toBe("POST");
+        request.flush(returnValue);
+    }
+
+});
+
diff --git a/src/app/store/process/effects/edit-task.effect.ts b/src/app/store/process/effects/edit-task.effect.ts
deleted file mode 100644
index afd2dcb..0000000
--- a/src/app/store/process/effects/edit-task.effect.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Injectable} from "@angular/core";
-import {Router} from "@angular/router";
-import {Actions, createEffect, ofType} from "@ngrx/effects";
-import {Action} from "@ngrx/store";
-import {Observable} from "rxjs";
-import {catchError, filter, map, switchMap} from "rxjs/operators";
-import {ProcessApiService} from "../../../core/api/process";
-import {claimTaskAction, deleteTaskAction, updateTaskAction} from "../actions";
-
-@Injectable({providedIn: "root"})
-export class EditTaskEffect {
-
-    public readonly editTask$ = createEffect(() => this.actions$.pipe(
-        ofType(claimTaskAction),
-        filter((action) => typeof action.statementId === "number" && typeof action.taskId === "string"),
-        switchMap((action) => this.editTask(action.statementId, action.taskId, action.options))
-    ));
-
-    public constructor(
-        private readonly actions$: Actions,
-        private readonly processApiService: ProcessApiService,
-        private readonly router: Router
-    ) {
-
-    }
-
-    public editTask(statementId: number, taskId: string, queryParams?: any): Observable<Action> {
-        queryParams = {...queryParams, id: statementId, taskId};
-        return this.processApiService.claimStatementTask(statementId, taskId).pipe(
-            map((task) => updateTaskAction({task})),
-            catchError(async () => deleteTaskAction({statementId, taskId})),
-            switchMap(async (action) => {
-                await this.router.navigate(["/edit"], {queryParams});
-                return action;
-            }),
-        );
-    }
-
-}
diff --git a/src/app/store/root/actions/root.actions.ts b/src/app/store/root/actions/root.actions.ts
index 966b185..abce748 100644
--- a/src/app/store/root/actions/root.actions.ts
+++ b/src/app/store/root/actions/root.actions.ts
@@ -66,10 +66,15 @@
 );
 
 export const openContactDataBaseAction = createAction(
-    "[Details/Edit] Open contact data base"
+    "[Details/Edit] Open contact data base in new tab"
 );
 
 export const openAttachmentAction = createAction(
     "[Details/Edit] Open attachment in new tab",
     props<{ statementId: number, attachmentId: number }>()
 );
+
+export const openFileAction = createAction(
+    "[API] Open file in new tab",
+    props<{ file: File }>()
+);
diff --git a/src/app/store/root/effects/open-new-tab.effect.ts b/src/app/store/root/effects/open-new-tab.effect.ts
index 14a7e8e..621fde4 100644
--- a/src/app/store/root/effects/open-new-tab.effect.ts
+++ b/src/app/store/root/effects/open-new-tab.effect.ts
@@ -13,12 +13,12 @@
 
 import {Inject, Injectable} from "@angular/core";
 import {Actions, createEffect, ofType} from "@ngrx/effects";
-import {filter, switchMap} from "rxjs/operators";
+import {filter, mergeMap, switchMap} from "rxjs/operators";
 import {AuthService} from "../../../core/auth";
-import {WINDOW} from "../../../core/dom";
+import {URL_TOKEN, WINDOW} from "../../../core/dom";
 import {CONTACT_DATA_BASE_ROUTE, SPA_BACKEND_ROUTE} from "../../../core/external-routes";
 import {urlJoin} from "../../../util/http";
-import {openAttachmentAction, openContactDataBaseAction} from "../actions";
+import {openAttachmentAction, openContactDataBaseAction, openFileAction} from "../actions";
 
 @Injectable({providedIn: "root"})
 export class OpenNewTabEffect {
@@ -26,7 +26,7 @@
     public openContactDataBase$ = createEffect(() => this.actions.pipe(
         ofType(openContactDataBaseAction),
         filter(() => this.authenticationService.token != null),
-        switchMap(() => this.open(this.contactDataBaseRoute))
+        switchMap(() => this.open(this.contactDataBaseRoute, true))
     ), {dispatch: false});
 
     public openAttachment$ = createEffect(() => this.actions.pipe(
@@ -36,24 +36,42 @@
         switchMap((action) => this.openAttachment(action.statementId, action.attachmentId))
     ), {dispatch: false});
 
+    public openFile$ = createEffect(() => this.actions.pipe(
+        ofType(openFileAction),
+        filter((action) => action.file instanceof File),
+        mergeMap((action) => this.openFile(action.file))
+    ), {dispatch: false});
+
     public constructor(
         public actions: Actions,
         private readonly authenticationService: AuthService,
         @Inject(SPA_BACKEND_ROUTE) private readonly spaBackendRoute: string,
         @Inject(CONTACT_DATA_BASE_ROUTE) private readonly contactDataBaseRoute: string,
-        @Inject(WINDOW) private readonly window: Window
+        @Inject(WINDOW) private readonly window: Window,
+        @Inject(URL_TOKEN) private readonly url: typeof URL
     ) {
 
     }
 
     public async openAttachment(statementId: number, attachmentId: number) {
         const endPoint = `/statements/${statementId}/attachments/${attachmentId}/file`;
-        return this.open(urlJoin(this.spaBackendRoute, endPoint));
+        return this.open(urlJoin(this.spaBackendRoute, endPoint), true);
     }
 
-    public async open(url: string) {
-        url += "?accessToken=" + this.authenticationService.token;
-        this.window.open(url, "_blank");
+    public async openFile(file: File) {
+        const objectUrl = this.url.createObjectURL(file);
+        const tab = await this.open(objectUrl, false, file.name);
+        tab.onbeforeunload = () => this.url.revokeObjectURL(objectUrl);
+        return tab;
+    }
+
+    public async open(url: string, withToken?: boolean, title?: string) {
+        url += withToken ? "?accessToken=" + this.authenticationService.token : "";
+        const tab = this.window.open(url, "_blank");
+        if (title != null) {
+            tab.onload = () => tab.document.title = title;
+        }
+        return tab;
     }
 
 
diff --git a/src/app/store/root/root.actions.ts b/src/app/store/root/root.actions.ts
deleted file mode 100644
index 4e54c6b..0000000
--- a/src/app/store/root/root.actions.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createAction, props} from "@ngrx/store";
-import {IAPIUserInfo} from "../../core/api/core/IAPIUserInfo";
-import {IAPIVersion} from "../../core/api/core/IAPIVersion";
-import {TStoreEntities} from "../../util/store.util";
-import {EExitCode} from "./model/EExitCode";
-
-export const intializeAction = createAction(
-    "[Store] Initialize"
-);
-
-export const completeInitializationAction = createAction(
-    "[Store] Complete initialization"
-);
-
-export const toggleLoadingPageAction = createAction(
-    "[Store] Toggle loading page",
-    props<{ isLoading?: boolean }>()
-);
-
-export const keepSessionAliveAction = createAction(
-    "[Store] Keep session alive"
-);
-
-export const fetchVersionAction = createAction(
-    "[Store] Fetch version"
-);
-
-export const setBackEndVersionAction = createAction(
-    "[API] Set back end version",
-    props<IAPIVersion>()
-);
-
-export const setUserAction = createAction(
-    "[API] Set user",
-    props<IAPIUserInfo>()
-);
-
-export const clearUserAction = createAction(
-    "[API] Clear user"
-);
-
-export const openExitPageAction = createAction(
-    "[API] Open exit page",
-    props<{ code: EExitCode }>()
-);
-
-export const logOutAction = createAction(
-    "[NavigationFrame] Log out"
-);
-
-export const setQueryParamsAction = createAction(
-    "[Router] Set query params",
-    props<{ queryParams: TStoreEntities<any> }>()
-);
diff --git a/src/app/store/settings/effects/statement-types.effects.ts b/src/app/store/settings/effects/statement-types.effects.ts
deleted file mode 100644
index c8350d8..0000000
--- a/src/app/store/settings/effects/statement-types.effects.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Injectable} from "@angular/core";
-import {Actions, createEffect, ofType} from "@ngrx/effects";
-import {Action} from "@ngrx/store";
-import {Observable} from "rxjs";
-import {map, retry, switchMap} from "rxjs/operators";
-import {SettingsApiService} from "../../../core";
-import {retryAfter} from "../../../util";
-import {intializeAction} from "../../root/actions";
-import {setStatementTypesAction} from "../actions";
-
-@Injectable({providedIn: "root"})
-export class StatementTypesEffects {
-
-    public initialize$ = createEffect(() => this.actions.pipe(
-        ofType(intializeAction),
-        switchMap(() => {
-            return this.fetchStatementTypes().pipe(
-                retryAfter(30000)
-            );
-        })
-    ));
-
-    public constructor(private readonly actions: Actions, private readonly settingsApiService: SettingsApiService) {
-
-    }
-
-    public fetchStatementTypes(): Observable<Action> {
-        return this.settingsApiService.getStatementTypes().pipe(
-            map((statementTypes) => setStatementTypesAction({statementTypes})),
-            retry(2)
-        );
-    }
-
-}
diff --git a/src/app/store/settings/statements-reducers.token.ts b/src/app/store/settings/statements-reducers.token.ts
deleted file mode 100644
index c4c0dd2..0000000
--- a/src/app/store/settings/statements-reducers.token.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {InjectionToken} from "@angular/core";
-import {ActionReducerMap} from "@ngrx/store";
-import {ISettingsStoreState} from "./model";
-import {statementTypesReducer} from "./reducers";
-
-export const SETTINGS_FEATURE_NAME = "settings";
-
-export const SETTINGS_REDUCER = new InjectionToken<ActionReducerMap<ISettingsStoreState>>("Settings store reducer", {
-    providedIn: "root",
-    factory: () => ({
-        statementTypes: statementTypesReducer
-    })
-});
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/store/statements/actions/error.actions.ts
similarity index 68%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/store/statements/actions/error.actions.ts
index fc6c436..3016963 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/store/statements/actions/error.actions.ts
@@ -11,7 +11,10 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
-}
+import {createAction, props} from "@ngrx/store";
+import {IStatementErrorEntity} from "../model";
+
+export const setStatementErrorAction = createAction(
+    "[API] Set statement error",
+    props<{ statementId: number, error: IStatementErrorEntity }>()
+);
diff --git a/src/app/store/statements/actions/fetch.actions.ts b/src/app/store/statements/actions/fetch.actions.ts
index a13078c..8137edd 100644
--- a/src/app/store/statements/actions/fetch.actions.ts
+++ b/src/app/store/statements/actions/fetch.actions.ts
@@ -13,11 +13,11 @@
 
 import {createAction, props} from "@ngrx/store";
 import {IAPIStatementModel} from "../../../core/api";
-import {IStatementEntity} from "../model";
+import {IStatementConfigurationEntity, IStatementEntity} from "../model";
 
 export const fetchStatementDetailsAction = createAction(
-    "[Details/Edit] Fetch statement's details",
-    props<{ statementId: number; withoutConfiguration?: boolean }>()
+    "[Details/Edit] Fetch statement details",
+    props<{ statementId: number; withConfiguration?: boolean }>()
 );
 
 export const updateStatementEntityAction = createAction(
@@ -29,3 +29,13 @@
     "[API] Update statement info",
     props<{ items: IAPIStatementModel[] }>()
 );
+
+export const updateStatementConfigurationAction = createAction(
+    "[API] Update statement configuration",
+    props<{ statementId: number, entity: IStatementConfigurationEntity }>()
+);
+
+export const fetchStatementTextArrangementAction = createAction(
+    "[Edit] Fetch statement text arrangement",
+    props<{ statementId: number; }>()
+);
diff --git a/src/app/store/statements/actions/index.ts b/src/app/store/statements/actions/index.ts
index 6f7b32b..1cae168 100644
--- a/src/app/store/statements/actions/index.ts
+++ b/src/app/store/statements/actions/index.ts
@@ -12,9 +12,8 @@
  ********************************************************************************/
 
 export * from "./comments.actions";
+export * from "./error.actions";
 export * from "./fetch.actions";
-export * from "./new-statement-form.actions";
-export * from "./submit.actions";
-
 export * from "./loading.actions";
 export * from "./search.actions";
+export * from "./submit.actions";
diff --git a/src/app/store/statements/actions/loading.actions.ts b/src/app/store/statements/actions/loading.actions.ts
index 3b556d7..2bf9af5 100644
--- a/src/app/store/statements/actions/loading.actions.ts
+++ b/src/app/store/statements/actions/loading.actions.ts
@@ -12,9 +12,9 @@
  ********************************************************************************/
 
 import {createAction, props} from "@ngrx/store";
-import {IStatementLoadingState} from "../model";
+import {IStatementLoadingEntity} from "../model";
 
 export const setStatementLoadingAction = createAction(
     "[Effects/API] Set statement loading state",
-    props<{ loading: Partial<IStatementLoadingState> }>()
+    props<{ loading: Partial<IStatementLoadingEntity> }>()
 );
diff --git a/src/app/store/statements/actions/new-statement-form.actions.ts b/src/app/store/statements/actions/new-statement-form.actions.ts
deleted file mode 100644
index 2bceadc..0000000
--- a/src/app/store/statements/actions/new-statement-form.actions.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createAction, props} from "@ngrx/store";
-import {IStatementInformationFormValue} from "../model";
-
-export const clearNewStatementFormAction = createAction(
-    "[NewStatement] Clear form"
-);
-
-export const submitNewStatementAction = createAction(
-    "[NewStatement] Submit",
-    props<{ value: IStatementInformationFormValue }>()
-);
-
-export const setNewStatementProgressAction = createAction(
-    "[API] Set progress for new statement form__",
-    props<{ isLoading: boolean, error?: string }>()
-);
diff --git a/src/app/store/statements/actions/new-statement.actions.ts b/src/app/store/statements/actions/new-statement.actions.ts
deleted file mode 100644
index 797321d..0000000
--- a/src/app/store/statements/actions/new-statement.actions.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createAction, props} from "@ngrx/store";
-import {INewStatementForm} from "../model";
-
-export const clearNewStatementFormAction = createAction(
-    "[NewStatement] Clear new statement form"
-);
-
-export const addNewStatementAction = createAction(
-    "[NewStatement] Add new statement",
-    props<{ form: INewStatementForm }>()
-);
-
-export const setNewStatementProgressAction = createAction(
-    "[API] Set progress for creating new statement",
-    props<{ isLoading: boolean, error?: string }>()
-);
diff --git a/src/app/store/statements/actions/statements.actions.ts b/src/app/store/statements/actions/statements.actions.ts
deleted file mode 100644
index 63cfe13..0000000
--- a/src/app/store/statements/actions/statements.actions.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createAction, props} from "@ngrx/store";
-import {IAPIAttachmentModel} from "../../../core";
-import {IStatementEntity} from "../model";
-
-export const fetchStatementsAction = createAction(
-    "[Dashboard] Fetch statements"
-);
-
-export const fetchStatementDetailsAction = createAction(
-    "[StatementDetails] Fetch statement details",
-    props<{ statementId: number }>()
-);
-
-export const addStatementsAction = createAction(
-    "[API] Add statements ",
-    props<{ statements: IStatementEntity[] }>()
-);
-
-export const addAttachmentsAction = createAction(
-    "[API] Set attachments to statement",
-    props<{ statementId: number, attachments: IAPIAttachmentModel[] }>()
-);
diff --git a/src/app/store/statements/actions/submit.actions.ts b/src/app/store/statements/actions/submit.actions.ts
index d3c4d24..d296bb3 100644
--- a/src/app/store/statements/actions/submit.actions.ts
+++ b/src/app/store/statements/actions/submit.actions.ts
@@ -12,7 +12,8 @@
  ********************************************************************************/
 
 import {createAction, props} from "@ngrx/store";
-import {IStatementInformationFormValue, IWorkflowFormValue} from "../model";
+import {IAPITextArrangementItemModel} from "../../../core/api/text";
+import {IStatementEditorFormValue, IStatementInformationFormValue, IWorkflowFormValue} from "../model";
 
 /**
  * This action submits the value of the statement information form to the back end.
@@ -39,7 +40,24 @@
     }>()
 );
 
+
 export const submitWorkflowDataFormAction = createAction(
     "[Edit] Submit workflow data form",
     props<{ statementId: number, taskId: string, data: IWorkflowFormValue, completeTask?: boolean }>()
 );
+
+
+export const validateStatementArrangementAction = createAction(
+    "[Edit] Validate statement arrangement",
+    props<{ statementId: number, taskId: string, arrangement: IAPITextArrangementItemModel[] }>()
+);
+
+export const compileStatementArrangementAction = createAction(
+    "[Edit] Compile statement arrangement",
+    props<{ statementId: number, taskId: string, arrangement: IAPITextArrangementItemModel[] }>()
+);
+
+export const submitStatementEditorFormAction = createAction(
+    "[Edit] Submit statement editor form",
+    props<{ statementId: number, taskId: string, value: IStatementEditorFormValue }>()
+);
diff --git a/src/app/store/statements/effects/add-statement.effect.ts b/src/app/store/statements/effects/add-statement.effect.ts
deleted file mode 100644
index 67d7bb6..0000000
--- a/src/app/store/statements/effects/add-statement.effect.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Injectable} from "@angular/core";
-import {Router} from "@angular/router";
-import {Actions, createEffect, ofType} from "@ngrx/effects";
-import {Action} from "@ngrx/store";
-import {concat, EMPTY, Observable} from "rxjs";
-import {catchError, endWith, exhaustMap, filter, finalize, map, startWith, switchMap} from "rxjs/operators";
-import {StatementsApiService} from "../../../core";
-import {addAttachmentsAction, addNewStatementAction, addStatementsAction, setNewStatementProgressAction} from "../actions";
-import {ENewStatementError, INewStatementForm} from "../model";
-
-@Injectable({providedIn: "root"})
-export class AddStatementEffect {
-
-    public readonly addNewStatement$ = createEffect(() => this.actions.pipe(
-        ofType(addNewStatementAction),
-        filter((action) => action?.form != null),
-        exhaustMap((action) => this.addNewStatement(action.form))
-    ));
-
-    public constructor(
-        private readonly actions: Actions,
-        private readonly statementsApiService: StatementsApiService,
-        private readonly router: Router
-    ) {
-
-    }
-
-    public async navigateToStatement(statementId: number) {
-        if (Number.isInteger(statementId)) {
-            return this.router.navigate(["/details"], {queryParams: {id: statementId}});
-        }
-    }
-
-    public addNewStatement(form: INewStatementForm): Observable<Action> {
-        return this.createStatement(form).pipe(
-            startWith(setNewStatementProgressAction({isLoading: true})),
-            catchError(async (error) => {
-                console.error(error);
-                return setNewStatementProgressAction({isLoading: false, error: ENewStatementError.UNKNOWN_ERROR});
-            }),
-            endWith(setNewStatementProgressAction({isLoading: false}))
-        );
-    }
-
-    public createStatement(form: INewStatementForm): Observable<Action> {
-        return this.statementsApiService.postStatement({
-            title: form?.title,
-            dueDate: form?.dueDate,
-            receiptDate: form?.receiptDate,
-            typeId: form?.typeId,
-            city: form?.city,
-            district: form?.district
-        }).pipe(
-            switchMap((statement) => {
-                return this.attachFiles(statement.id, form?.attachments).pipe(
-                    startWith(addStatementsAction({statements: [statement]})),
-                    finalize(() => this.navigateToStatement(statement?.id))
-                );
-            })
-        );
-    }
-
-    public attachFiles(statementId: number, attachments?: File[]): Observable<Action> {
-        attachments = (Array.isArray(attachments) ? attachments : [])
-            .filter((file) => file instanceof File);
-
-        return concat(...attachments.map((file) => this.attachFile(statementId, file)));
-    }
-
-    private attachFile(statementId: number, file: File): Observable<Action> {
-        return this.statementsApiService.postAttachment(statementId, file).pipe(
-            map((attachment) => addAttachmentsAction({statementId, attachments: [attachment]})),
-            catchError((error) => {
-                console.error(error);
-                return EMPTY;
-            })
-        );
-    }
-
-}
diff --git a/src/app/store/statements/effects/compile-statement-arrangement/compile-statement-arrangement.effect.ts b/src/app/store/statements/effects/compile-statement-arrangement/compile-statement-arrangement.effect.ts
new file mode 100644
index 0000000..ce2efeb
--- /dev/null
+++ b/src/app/store/statements/effects/compile-statement-arrangement/compile-statement-arrangement.effect.ts
@@ -0,0 +1,62 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Injectable} from "@angular/core";
+import {Actions, createEffect, ofType} from "@ngrx/effects";
+import {Action} from "@ngrx/store";
+import {Observable, of} from "rxjs";
+import {endWith, filter, startWith, switchMap} from "rxjs/operators";
+import {IAPITextArrangementItemModel, IAPITextArrangementValidationModel, TextApiService} from "../../../../core";
+import {catchHttpError, EHttpStatusCodes, ignoreError} from "../../../../util";
+import {openFileAction} from "../../../root/actions";
+import {
+    compileStatementArrangementAction,
+    setStatementErrorAction,
+    setStatementLoadingAction,
+    updateStatementEntityAction
+} from "../../actions";
+
+@Injectable({providedIn: "root"})
+export class CompileStatementArrangementEffect {
+
+    public compile$ = createEffect(() => this.actions.pipe(
+        ofType(compileStatementArrangementAction),
+        filter((action) => action.statementId != null && action.taskId != null),
+        switchMap((action) => this.compile(action.statementId, action.taskId, action.arrangement))
+    ));
+
+    public constructor(private readonly actions: Actions, private readonly textApiService: TextApiService) {
+
+    }
+
+    public compile(statementId: number, taskId: string, arrangement: IAPITextArrangementItemModel[]): Observable<Action> {
+        return this.textApiService.compileArrangement(statementId, taskId, arrangement).pipe(
+            switchMap((file) => {
+                return of(
+                    updateStatementEntityAction({statementId, entity: {file}}),
+                    setStatementErrorAction({statementId, error: {arrangement: null}}),
+                    openFileAction({file})
+                );
+            }),
+            catchHttpError(async (response) => {
+                const errorMessage = response.error instanceof Blob ? await response.error.text() : response.error;
+                const body: IAPITextArrangementValidationModel = JSON.parse(errorMessage);
+                return setStatementErrorAction({statementId, error: {arrangement: body.errors}});
+            }, EHttpStatusCodes.FAILED_DEPENDENCY),
+            ignoreError(),
+            startWith(setStatementLoadingAction({loading: {submittingStatementEditorForm: true}})),
+            endWith(setStatementLoadingAction({loading: {submittingStatementEditorForm: false}}))
+        );
+    }
+
+}
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/store/statements/effects/compile-statement-arrangement/index.ts
similarity index 90%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/store/statements/effects/compile-statement-arrangement/index.ts
index 7378646..42e8659 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/store/statements/effects/compile-statement-arrangement/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./compile-statement-arrangement.effect";
diff --git a/src/app/store/statements/effects/fetch-statement-details/fetch-statement-details.effect.ts b/src/app/store/statements/effects/fetch-statement-details/fetch-statement-details.effect.ts
index 3f0adbd..3e93c9e 100644
--- a/src/app/store/statements/effects/fetch-statement-details/fetch-statement-details.effect.ts
+++ b/src/app/store/statements/effects/fetch-statement-details/fetch-statement-details.effect.ts
@@ -21,7 +21,13 @@
 import {arrayJoin} from "../../../../util/store";
 import {fetchAttachmentsAction} from "../../../attachments/actions";
 import {setDiagramAction, setHistoryAction, setTasksAction} from "../../../process/actions";
-import {fetchCommentsAction, fetchStatementDetailsAction, updateStatementEntityAction, updateStatementInfoAction} from "../../actions";
+import {
+    fetchCommentsAction,
+    fetchStatementDetailsAction,
+    updateStatementConfigurationAction,
+    updateStatementEntityAction,
+    updateStatementInfoAction
+} from "../../actions";
 
 @Injectable({providedIn: "root"})
 export class FetchStatementDetailsEffect {
@@ -90,7 +96,7 @@
 
     public fetchConfiguration(statementId: number) {
         return this.settingsApiService.getDepartmentsConfiguration(statementId).pipe(
-            map((configuration) => updateStatementEntityAction({statementId, entity: {configuration}})),
+            map((departments) => updateStatementConfigurationAction({statementId, entity: {departments}})),
             retry(2),
             ignoreError()
         );
@@ -122,7 +128,7 @@
 
     public fetchSectors(statementId: number) {
         return this.statementsApiService.getSectors(statementId).pipe(
-            map((sectors) => updateStatementEntityAction({statementId, entity: {sectors}})),
+            map((sectors) => updateStatementConfigurationAction({statementId, entity: {sectors}})),
             retry(2),
             ignoreError()
         );
diff --git a/src/app/store/statements/effects/fetch-statements.effect.ts b/src/app/store/statements/effects/fetch-statements.effect.ts
deleted file mode 100644
index 956d938..0000000
--- a/src/app/store/statements/effects/fetch-statements.effect.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Injectable} from "@angular/core";
-import {Actions, createEffect, ofType} from "@ngrx/effects";
-import {Action} from "@ngrx/store";
-import {EMPTY, merge, Observable} from "rxjs";
-import {catchError, filter, map, retry, startWith, switchMap} from "rxjs/operators";
-import {ProcessApiService, StatementsApiService} from "../../../core";
-import {setTasksAction} from "../../process/actions";
-import {addAttachmentsAction, addStatementsAction, fetchStatementDetailsAction, fetchStatementsAction} from "../actions";
-
-@Injectable({providedIn: "root"})
-export class FetchStatementsEffect {
-
-    public readonly fetchStatements$ = createEffect(() => this.actions.pipe(
-        ofType(fetchStatementsAction),
-        switchMap(() => this.fetchStatements())
-    ));
-
-    public readonly fetchStatementDetails$ = createEffect(() => this.actions.pipe(
-        ofType(fetchStatementDetailsAction),
-        filter((action) => typeof action?.statementId === "number"),
-        switchMap((action) => this.fetchStatementDetails(action.statementId))
-    ));
-
-    public constructor(
-        private readonly actions: Actions,
-        private readonly statementsApiService: StatementsApiService,
-        private readonly processApiService: ProcessApiService
-    ) {
-
-    }
-
-    public fetchStatements(): Observable<Action> {
-        return this.statementsApiService.getStatements().pipe(
-            map((statements) => {
-                return addStatementsAction({statements});
-            }),
-            retry(2),
-            catchError(() => EMPTY)
-        );
-    }
-
-    public fetchStatementDetails(statementId: number): Observable<Action> {
-        return this.statementsApiService.getStatement(statementId).pipe(
-            retry(2),
-            switchMap((statement) => {
-                return merge(
-                    this.fetchTasks(statementId),
-                    this.fetchAttachments(statementId)
-                ).pipe(
-                    startWith(addStatementsAction({statements: [statement]}))
-                );
-            }),
-            catchError((error) => {
-                console.error(error);
-                return EMPTY;
-            })
-        );
-    }
-
-    public fetchTasks(statementId: number) {
-        return this.processApiService.getStatementTasks(statementId).pipe(
-            map((tasks) => setTasksAction({statementId, tasks})),
-            retry(2)
-        );
-    }
-
-    public fetchAttachments(statementId: number) {
-        return this.statementsApiService.getAllAttachments(statementId).pipe(
-            map((attachments) => addAttachmentsAction({statementId, attachments})),
-            retry(2)
-        );
-    }
-
-}
diff --git a/src/app/store/statements/effects/fetch-text-arrangement/fetch-text-arrangement.effect.ts b/src/app/store/statements/effects/fetch-text-arrangement/fetch-text-arrangement.effect.ts
new file mode 100644
index 0000000..0a3d27f
--- /dev/null
+++ b/src/app/store/statements/effects/fetch-text-arrangement/fetch-text-arrangement.effect.ts
@@ -0,0 +1,60 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Injectable} from "@angular/core";
+import {Actions, createEffect, ofType} from "@ngrx/effects";
+import {Action} from "@ngrx/store";
+import {merge, Observable} from "rxjs";
+import {filter, map, retry, switchMap} from "rxjs/operators";
+import {TextApiService} from "../../../../core";
+import {ignoreError} from "../../../../util";
+import {fetchStatementTextArrangementAction, updateStatementConfigurationAction, updateStatementEntityAction} from "../../actions";
+
+@Injectable({providedIn: "root"})
+export class FetchTextArrangementEffect {
+
+    public fetch$ = createEffect(() => this.actions.pipe(
+        ofType(fetchStatementTextArrangementAction),
+        filter((action) => action.statementId != null),
+        switchMap((action) => this.fetch(action.statementId))
+    ));
+
+    public constructor(private readonly actions: Actions, private readonly textApiService: TextApiService) {
+
+    }
+
+    public fetch(statementId: number): Observable<Action> {
+        return merge(
+            this.fetchArrangement(statementId),
+            this.fetchConfiguration(statementId)
+        );
+    }
+
+    public fetchArrangement(statementId: number) {
+        return this.textApiService.getArrangement(statementId).pipe(
+            map((arrangement) => updateStatementEntityAction({statementId, entity: {arrangement}})),
+            retry(2),
+            ignoreError()
+        );
+    }
+
+    public fetchConfiguration(statementId: number) {
+        return this.textApiService.getConfiguration(statementId).pipe(
+            map((text) => updateStatementConfigurationAction({statementId, entity: {text}})),
+            retry(2),
+            ignoreError()
+        );
+    }
+
+}
+
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/store/statements/effects/fetch-text-arrangement/index.ts
similarity index 91%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/store/statements/effects/fetch-text-arrangement/index.ts
index 7378646..1f7b8be 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/store/statements/effects/fetch-text-arrangement/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./fetch-text-arrangement.effect";
diff --git a/src/app/store/statements/effects/index.ts b/src/app/store/statements/effects/index.ts
index 0a0fc80..7f65784 100644
--- a/src/app/store/statements/effects/index.ts
+++ b/src/app/store/statements/effects/index.ts
@@ -12,7 +12,11 @@
  ********************************************************************************/
 
 export * from "./comments";
+export * from "./compile-statement-arrangement";
 export * from "./fetch-statement-details";
+export * from "./fetch-text-arrangement";
 export * from "./search";
 export * from "./submit-information-form";
+export * from "./submit-statement-editor-form";
 export * from "./submit-workflow-form";
+export * from "./validate-statement-arrangement";
diff --git a/src/app/store/statements/effects/submit-info-form/index.ts b/src/app/store/statements/effects/submit-info-form/index.ts
deleted file mode 100644
index fe8f1a6..0000000
--- a/src/app/store/statements/effects/submit-info-form/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export * from "./submit-info-form.effect";
diff --git a/src/app/store/statements/effects/submit-info-form/submit-info-form.effect.ts b/src/app/store/statements/effects/submit-info-form/submit-info-form.effect.ts
deleted file mode 100644
index d759a05..0000000
--- a/src/app/store/statements/effects/submit-info-form/submit-info-form.effect.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Injectable} from "@angular/core";
-import {Router} from "@angular/router";
-import {Actions, createEffect, ofType} from "@ngrx/effects";
-import {Action} from "@ngrx/store";
-import {concat, Observable} from "rxjs";
-import {catchError, endWith, filter, finalize, map, startWith, switchMap, toArray} from "rxjs/operators";
-import {StatementsApiService} from "../../../../core/api/statements";
-import {ignoreError} from "../../../../util/rxjs";
-import {setNewStatementProgressAction, setStatementDetails, submitNewStatementAction} from "../../actions";
-import {ENewStatementError, IStatementInfoFormValue} from "../../model";
-
-@Injectable({providedIn: "root"})
-export class SubmitInfoFormEffect {
-
-    public readonly new$ = createEffect(() => this.actions.pipe(
-        ofType(submitNewStatementAction),
-        filter((action) => action.value != null),
-        switchMap((action) => this.submitNewStatement(action.value))
-    ));
-
-    public constructor(
-        private readonly actions: Actions,
-        private readonly statementsApiService: StatementsApiService,
-        private readonly router: Router
-    ) {
-
-    }
-
-    public async navigateToStatement(statementId: number) {
-        if (Number.isInteger(statementId)) {
-            return this.router.navigate(["/details"], {queryParams: {id: statementId}});
-        }
-    }
-
-    public submitNewStatement(value: IStatementInfoFormValue): Observable<Action> {
-        return this.createStatement(value).pipe(
-            startWith(setNewStatementProgressAction({isLoading: true})),
-            endWith(setNewStatementProgressAction({isLoading: false})),
-            catchError(async (error) => {
-                console.error(error);
-                return setNewStatementProgressAction({isLoading: false, error: ENewStatementError.UNKNOWN_ERROR});
-            })
-        );
-    }
-
-    public createStatement(value: IStatementInfoFormValue): Observable<Action> {
-        return this.statementsApiService.postStatement({
-            title: value?.title,
-            dueDate: value?.dueDate,
-            receiptDate: value?.receiptDate,
-            typeId: value?.typeId,
-            city: value?.city,
-            district: value?.district
-        }).pipe(
-            switchMap((info) => {
-                return this.attachFiles(info.id, value?.attachments).pipe(
-                    startWith(setStatementDetails({statementId: info.id, details: {info}})),
-                    finalize(() => this.navigateToStatement(info?.id))
-                );
-            })
-        );
-    }
-
-    public attachFiles(statementId: number, attachments?: File[]): Observable<Action> {
-        const postAttachments = (Array.isArray(attachments) ? attachments : [])
-            .filter((file) => file instanceof File)
-            .map((file) => this.statementsApiService.postAttachment(statementId, file).pipe(ignoreError()));
-
-        return concat(...postAttachments).pipe(
-            map((attachment) => attachment.id),
-            toArray(),
-            map((attachmentIds) => setStatementDetails({statementId, details: {attachments: attachmentIds}}))
-        );
-    }
-
-}
diff --git a/src/app/store/statements/effects/submit-information-form/submit-statement-information-form.effect.ts b/src/app/store/statements/effects/submit-information-form/submit-statement-information-form.effect.ts
index b12d55b..02e771a 100644
--- a/src/app/store/statements/effects/submit-information-form/submit-statement-information-form.effect.ts
+++ b/src/app/store/statements/effects/submit-information-form/submit-statement-information-form.effect.ts
@@ -17,11 +17,9 @@
 import {Action} from "@ngrx/store";
 import {concat, defer, EMPTY, Observable} from "rxjs";
 import {catchError, endWith, exhaustMap, filter, map, startWith, switchMap} from "rxjs/operators";
-import {EAPIProcessTaskDefinitionKey} from "../../../../core/api";
-import {ProcessApiService} from "../../../../core/api/process";
-import {StatementsApiService} from "../../../../core/api/statements";
+import {EAPIProcessTaskDefinitionKey, ProcessApiService, StatementsApiService} from "../../../../core";
 import {ignoreError} from "../../../../util/rxjs";
-import {AddOrRemoveAttachmentsEffect} from "../../../attachments/effects/add-or-remove";
+import {SubmitAttachmentsEffect} from "../../../attachments/effects/submit";
 import {CompleteTaskEffect} from "../../../process/effects";
 import {setStatementLoadingAction, submitStatementInformationFormAction} from "../../actions";
 import {IStatementInformationFormValue} from "../../model";
@@ -43,7 +41,7 @@
     public constructor(
         private readonly actions: Actions,
         private readonly router: Router,
-        private readonly addOrRemoveAttachmentsEffect: AddOrRemoveAttachmentsEffect,
+        private readonly submitAttachmentsEffect: SubmitAttachmentsEffect,
         private readonly completeTaskEffect: CompleteTaskEffect,
         private readonly processApiService: ProcessApiService,
         private readonly statementsApiService: StatementsApiService,
@@ -59,9 +57,7 @@
     ): Observable<Action> {
         return this.updateStatement(statementId, taskId, value).pipe(
             switchMap(() => {
-                const addOrRemoveAttachments$ = this.addOrRemoveAttachmentsEffect.addOrRemoveAttachments(
-                    statementId, taskId, value.addAttachments, value.removeAttachments
-                ).pipe(
+                const submitAttachments$ = this.submitAttachmentsEffect.submit(statementId, taskId, value?.attachments).pipe(
                     catchError(() => {
                         responsible = undefined;
                         return EMPTY;
@@ -69,7 +65,7 @@
                 );
 
                 return concat(
-                    addOrRemoveAttachments$,
+                    submitAttachments$,
                     defer(() => this.finalizeSubmit(statementId, taskId, responsible))
                 );
             }),
@@ -90,9 +86,7 @@
             switchMap(() => this.completeTaskEffect.claimNextTask(statementId, EAPIProcessTaskDefinitionKey.ADD_BASIC_INFO_DATA)),
             switchMap((task) => {
                 taskId = task?.taskId;
-                const addOrRemoveAttachments$ = this.addOrRemoveAttachmentsEffect.addOrRemoveAttachments(
-                    statementId, taskId, value.addAttachments, value.removeAttachments
-                ).pipe(
+                const submitAttachments$ = this.submitAttachmentsEffect.submit(statementId, taskId, value?.attachments).pipe(
                     catchError(() => {
                         responsible = undefined;
                         return EMPTY;
@@ -100,7 +94,7 @@
                 );
 
                 return concat(
-                    addOrRemoveAttachments$,
+                    submitAttachments$,
                     defer(() => this.finalizeSubmit(statementId, taskId, responsible))
                 );
             }),
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/store/statements/effects/submit-statement-editor-form/index.ts
similarity index 90%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/store/statements/effects/submit-statement-editor-form/index.ts
index 7378646..b3a86ac 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/store/statements/effects/submit-statement-editor-form/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./submit-statement-editor-form.effect";
diff --git a/src/app/store/statements/effects/submit-statement-editor-form/submit-statement-editor-form.effect.ts b/src/app/store/statements/effects/submit-statement-editor-form/submit-statement-editor-form.effect.ts
new file mode 100644
index 0000000..4c9b4b0
--- /dev/null
+++ b/src/app/store/statements/effects/submit-statement-editor-form/submit-statement-editor-form.effect.ts
@@ -0,0 +1,60 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Injectable} from "@angular/core";
+import {Actions, createEffect, ofType} from "@ngrx/effects";
+import {Action} from "@ngrx/store";
+import {concat, Observable} from "rxjs";
+import {endWith, filter, map, retry, startWith, switchMap} from "rxjs/operators";
+import {IAPITextArrangementItemModel, TextApiService} from "../../../../core";
+import {ignoreError} from "../../../../util";
+import {SubmitAttachmentsEffect} from "../../../attachments/effects";
+import {setStatementLoadingAction, submitStatementEditorFormAction, updateStatementEntityAction} from "../../actions";
+import {IStatementEditorFormValue} from "../../model";
+
+@Injectable({providedIn: "root"})
+export class SubmitStatementEditorFormEffect {
+
+    public submit$ = createEffect(() => this.actions.pipe(
+        ofType(submitStatementEditorFormAction),
+        filter((action) => action.statementId != null && action.taskId != null),
+        switchMap((action) => this.submit(action.statementId, action.taskId, action.value))
+    ));
+
+    public constructor(
+        private readonly actions: Actions,
+        private readonly submitAttachmentsEffect: SubmitAttachmentsEffect,
+        private readonly textApiService: TextApiService
+    ) {
+
+    }
+
+    public submit(statementId: number, taskId: string, value: IStatementEditorFormValue): Observable<Action> {
+        return concat(
+            this.submitArrangement(statementId, taskId, value.arrangement),
+            this.submitAttachmentsEffect.submit(statementId, taskId, value.attachments)
+        ).pipe(
+            ignoreError(),
+            startWith(setStatementLoadingAction({loading: {submittingStatementEditorForm: true}})),
+            endWith(setStatementLoadingAction({loading: {submittingStatementEditorForm: false}}))
+        );
+    }
+
+    public submitArrangement(statementId: number, taskId: string, arrangement: IAPITextArrangementItemModel[]): Observable<Action> {
+        return this.textApiService.postArrangement(statementId, taskId, arrangement).pipe(
+            map(() => updateStatementEntityAction({statementId, entity: {arrangement}})),
+            retry(2)
+        );
+    }
+
+}
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/store/statements/effects/validate-statement-arrangement/index.ts
similarity index 90%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/store/statements/effects/validate-statement-arrangement/index.ts
index 7378646..6c07505 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/store/statements/effects/validate-statement-arrangement/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./validate-statement-arrangement.effect";
diff --git a/src/app/store/statements/effects/validate-statement-arrangement/validate-statement-arrangement.effect.ts b/src/app/store/statements/effects/validate-statement-arrangement/validate-statement-arrangement.effect.ts
new file mode 100644
index 0000000..300498c
--- /dev/null
+++ b/src/app/store/statements/effects/validate-statement-arrangement/validate-statement-arrangement.effect.ts
@@ -0,0 +1,51 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {Injectable} from "@angular/core";
+import {Actions, createEffect, ofType} from "@ngrx/effects";
+import {Action} from "@ngrx/store";
+import {Observable, of} from "rxjs";
+import {endWith, filter, startWith, switchMap} from "rxjs/operators";
+import {IAPITextArrangementItemModel, TextApiService} from "../../../../core";
+import {ignoreError} from "../../../../util/rxjs";
+import {setStatementErrorAction, setStatementLoadingAction, validateStatementArrangementAction} from "../../actions";
+
+@Injectable({providedIn: "root"})
+export class ValidateStatementArrangementEffect {
+
+    public validate$ = createEffect(() => this.actions.pipe(
+        ofType(validateStatementArrangementAction),
+        filter((action) => action.statementId != null && action.taskId != null),
+        switchMap((action) => this.validate(action.statementId, action.taskId, action.arrangement))
+    ));
+
+    public constructor(private readonly actions: Actions, private readonly textApiService: TextApiService) {
+
+    }
+
+    public validate(statementId: number, taskId: string, arrangement: IAPITextArrangementItemModel[]): Observable<Action> {
+        return this.textApiService.validateArrangement(statementId, taskId, arrangement).pipe(
+            switchMap((result) => {
+                return of(
+                    result.valid ?
+                        setStatementErrorAction({statementId, error: {arrangement: null}}) :
+                        setStatementErrorAction({statementId, error: {arrangement: result.errors}})
+                );
+            }),
+            ignoreError(),
+            startWith(setStatementLoadingAction({loading: {submittingStatementEditorForm: true}})),
+            endWith(setStatementLoadingAction({loading: {submittingStatementEditorForm: false}}))
+        );
+    }
+
+}
diff --git a/src/app/store/statements/model/INewStatementStoreState.ts b/src/app/store/statements/model/INewStatementStoreState.ts
deleted file mode 100644
index 4e9d19b..0000000
--- a/src/app/store/statements/model/INewStatementStoreState.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export interface INewStatementStoreState {
-
-    form?: INewStatementForm;
-
-    isLoading?: boolean;
-
-    error?: string;
-
-}
-
-export interface INewStatementForm {
-
-    title: string;
-
-    receiptDate: string;
-
-    dueDate: string;
-
-    typeId: number;
-
-    city: string;
-
-    district: string;
-
-    attachments?: File[];
-
-}
diff --git a/src/app/store/statements/model/IStatementConfigurationEntity.ts b/src/app/store/statements/model/IStatementConfigurationEntity.ts
new file mode 100644
index 0000000..2d7466e
--- /dev/null
+++ b/src/app/store/statements/model/IStatementConfigurationEntity.ts
@@ -0,0 +1,26 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPIDepartmentsConfiguration} from "../../../core/api/settings";
+import {IAPISectorsModel} from "../../../core/api/statements/IAPISectorsModel";
+import {IAPIStatementTextConfigurationModel} from "../../../core/api/text";
+
+export interface IStatementConfigurationEntity {
+
+    text?: IAPIStatementTextConfigurationModel;
+
+    sectors?: IAPISectorsModel;
+
+    departments?: IAPIDepartmentsConfiguration;
+
+}
diff --git a/src/app/store/statements/model/IStatementEntity.ts b/src/app/store/statements/model/IStatementEntity.ts
index 02f9465..3ac3430 100644
--- a/src/app/store/statements/model/IStatementEntity.ts
+++ b/src/app/store/statements/model/IStatementEntity.ts
@@ -11,9 +11,8 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPIDepartmentsConfiguration} from "../../../core/api/settings";
 import {IAPICommentModel, IAPIStatementModel, IAPIWorkflowData} from "../../../core/api/statements";
-import {IAPISectorsModel} from "../../../core/api/statements/IAPISectorsModel";
+import {IAPITextArrangementItemModel} from "../../../core/api/text";
 
 export interface IStatementEntity {
 
@@ -21,12 +20,12 @@
 
     workflow?: IAPIWorkflowData;
 
-    configuration?: IAPIDepartmentsConfiguration;
-
     parentIds?: number[];
 
     comments?: IAPICommentModel[];
 
-    sectors?: IAPISectorsModel;
+    arrangement?: IAPITextArrangementItemModel[];
+
+    file?: File;
 
 }
diff --git a/src/app/store/statements/model/ENewStatementError.ts b/src/app/store/statements/model/IStatementErrorEntity.ts
similarity index 77%
rename from src/app/store/statements/model/ENewStatementError.ts
rename to src/app/store/statements/model/IStatementErrorEntity.ts
index 6842926..d700fef 100644
--- a/src/app/store/statements/model/ENewStatementError.ts
+++ b/src/app/store/statements/model/IStatementErrorEntity.ts
@@ -10,11 +10,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
+import {IAPITextArrangementErrorModel} from "../../../core/api/text";
 
-export enum ENewStatementError {
+export interface IStatementErrorEntity {
 
-    "UNKNOWN_ERROR" = "new.error.unknownError",
-
-    "INVALID_FORM" = "new.error.invalidForm"
+    arrangement?: IAPITextArrangementErrorModel[];
 
 }
diff --git a/src/app/store/statements/model/IStatementLoadingState.ts b/src/app/store/statements/model/IStatementLoadingEntity.ts
similarity index 88%
rename from src/app/store/statements/model/IStatementLoadingState.ts
rename to src/app/store/statements/model/IStatementLoadingEntity.ts
index 1241eb7..d0b7a36 100644
--- a/src/app/store/statements/model/IStatementLoadingState.ts
+++ b/src/app/store/statements/model/IStatementLoadingEntity.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface IStatementLoadingState {
+export interface IStatementLoadingEntity {
 
     search?: boolean;
 
@@ -19,4 +19,6 @@
 
     submittingWorkflowData?: boolean;
 
+    submittingStatementEditorForm?: boolean;
+
 }
diff --git a/src/app/store/statements/model/IStatementsStoreState.ts b/src/app/store/statements/model/IStatementsStoreState.ts
index d1d3392..5eb56d8 100644
--- a/src/app/store/statements/model/IStatementsStoreState.ts
+++ b/src/app/store/statements/model/IStatementsStoreState.ts
@@ -13,18 +13,21 @@
 
 import {IAPIPaginationResponse} from "../../../core";
 import {TStoreEntities} from "../../../util/store";
+import {IStatementConfigurationEntity} from "./IStatementConfigurationEntity";
 import {IStatementEntity} from "./IStatementEntity";
-import {IStatementLoadingState} from "./IStatementLoadingState";
-import {IStatementInfoForm} from "./statement-info-form/IStatementInfoForm";
+import {IStatementErrorEntity} from "./IStatementErrorEntity";
+import {IStatementLoadingEntity} from "./IStatementLoadingEntity";
 
 export interface IStatementsStoreState {
 
     entities: TStoreEntities<IStatementEntity>;
 
+    configuration?: TStoreEntities<IStatementConfigurationEntity>;
+
+    error?: TStoreEntities<IStatementErrorEntity>;
+
     search?: IAPIPaginationResponse<number>;
 
-    newStatementForm?: IStatementInfoForm;
-
-    loading?: IStatementLoadingState;
+    loading?: IStatementLoadingEntity;
 
 }
diff --git a/src/app/store/statements/model/index.ts b/src/app/store/statements/model/index.ts
index 82542a2..269652f 100644
--- a/src/app/store/statements/model/index.ts
+++ b/src/app/store/statements/model/index.ts
@@ -11,6 +11,9 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
+export * from "./statement-editor-form/IStatementEditorControlConfiguration";
+export * from "./statement-editor-form/IStatementEditorFormValue";
+
 export * from "./statement-info-form/ENewStatementError";
 export * from "./statement-info-form/IStatementInfoForm";
 export * from "./statement-info-form/IStatementInformationFormValue";
@@ -18,6 +21,8 @@
 export * from "./workflow-form/IWorkflowFormValue";
 export * from "./workflow-form/IDepartmentOptionValue";
 
-export * from "./IStatementsStoreState";
-export * from "./IStatementLoadingState";
+export * from "./IStatementConfigurationEntity";
 export * from "./IStatementEntity";
+export * from "./IStatementErrorEntity";
+export * from "./IStatementLoadingEntity";
+export * from "./IStatementsStoreState";
diff --git a/src/app/store/statements/model/statement-info-form/IStatementInfoFormValue.ts b/src/app/store/statements/model/statement-editor-form/IStatementEditorControlConfiguration.ts
similarity index 61%
copy from src/app/store/statements/model/statement-info-form/IStatementInfoFormValue.ts
copy to src/app/store/statements/model/statement-editor-form/IStatementEditorControlConfiguration.ts
index 663231b..698dcae 100644
--- a/src/app/store/statements/model/statement-info-form/IStatementInfoFormValue.ts
+++ b/src/app/store/statements/model/statement-editor-form/IStatementEditorControlConfiguration.ts
@@ -11,20 +11,17 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface IStatementInfoFormValue {
+import {IAPITextArrangementItemModel, IAPITextBlockModel} from "../../../../core/api/text";
+import {TStoreEntities} from "../../../../util/store";
 
-    title: string;
+export interface IStatementEditorControlConfiguration {
 
-    receiptDate: string;
+    textBlock?: IAPITextBlockModel;
 
-    dueDate: string;
+    selects: TStoreEntities<string[]>;
 
-    typeId: number;
+    replacements: TStoreEntities<string>;
 
-    city: string;
-
-    district: string;
-
-    attachments?: File[];
+    value: IAPITextArrangementItemModel;
 
 }
diff --git a/src/app/store/statements/model/ENewStatementError.ts b/src/app/store/statements/model/statement-editor-form/IStatementEditorFormValue.ts
similarity index 68%
copy from src/app/store/statements/model/ENewStatementError.ts
copy to src/app/store/statements/model/statement-editor-form/IStatementEditorFormValue.ts
index 6842926..aa071d2 100644
--- a/src/app/store/statements/model/ENewStatementError.ts
+++ b/src/app/store/statements/model/statement-editor-form/IStatementEditorFormValue.ts
@@ -11,10 +11,13 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export enum ENewStatementError {
+import {IAPITextArrangementItemModel} from "../../../../core";
+import {IAttachmentFormValue} from "../../../attachments/model";
 
-    "UNKNOWN_ERROR" = "new.error.unknownError",
+export interface IStatementEditorFormValue {
 
-    "INVALID_FORM" = "new.error.invalidForm"
+    arrangement: IAPITextArrangementItemModel[];
+
+    attachments?: IAttachmentFormValue;
 
 }
diff --git a/src/app/store/statements/model/statement-info-form/IStatementInformationFormValue.ts b/src/app/store/statements/model/statement-info-form/IStatementInformationFormValue.ts
index e21e896..1821844 100644
--- a/src/app/store/statements/model/statement-info-form/IStatementInformationFormValue.ts
+++ b/src/app/store/statements/model/statement-info-form/IStatementInformationFormValue.ts
@@ -12,11 +12,10 @@
  ********************************************************************************/
 
 import {IAPIPartialStatementModel} from "../../../../core/api/statements";
+import {IAttachmentFormValue} from "../../../attachments/model";
 
 export interface IStatementInformationFormValue extends IAPIPartialStatementModel {
 
-    addAttachments?: File[];
-
-    removeAttachments?: number[];
+    attachments?: IAttachmentFormValue;
 
 }
diff --git a/src/app/store/statements/reducers/configuration/statement-configuration.reducer.ts b/src/app/store/statements/reducers/configuration/statement-configuration.reducer.ts
new file mode 100644
index 0000000..50aabcd
--- /dev/null
+++ b/src/app/store/statements/reducers/configuration/statement-configuration.reducer.ts
@@ -0,0 +1,23 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {createReducer, on} from "@ngrx/store";
+import {updateEntitiesObject} from "../../../../util/store";
+import {updateStatementConfigurationAction} from "../../actions";
+
+export const statementConfigurationReducer = createReducer(
+    {},
+    on(updateStatementConfigurationAction, (state, payload) => {
+        return payload == null ? state : updateEntitiesObject(state, [payload.entity], () => payload.statementId);
+    })
+);
diff --git a/src/app/store/statements/reducers/entities.reducer.ts b/src/app/store/statements/reducers/entities.reducer.ts
deleted file mode 100644
index 87e4711..0000000
--- a/src/app/store/statements/reducers/entities.reducer.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Action, createReducer, on} from "@ngrx/store";
-import {arrayJoin, filterDistinctValues, TStoreEntities} from "../../../util";
-import {addAttachmentsAction, addStatementsAction} from "../actions";
-import {IStatementEntity} from "../model";
-
-export const statementsEntitiesReducer = createReducer<TStoreEntities<IStatementEntity>, Action>(
-    {},
-    on(addStatementsAction, (state, payload) => {
-        const statements = (Array.isArray(payload?.statements) ? payload.statements : [])
-            .filter((statement) => typeof statement?.id === "number");
-
-        if (statements.length === 0) {
-            return state;
-        }
-
-        state = state == null ? {} : {...state};
-
-        statements.forEach((statement) => {
-            const attachments = filterDistinctValues(arrayJoin(state[statement.id]?.attachments, statement?.attachments));
-            state[statement.id] = {
-                ...state[statement.id],
-                ...statement,
-                attachments: attachments.length > 0 ? attachments : undefined
-            };
-        });
-
-        return state;
-    }),
-    on(addAttachmentsAction, (state, payload) => {
-        const id = payload?.statementId;
-        const statement = id == null || state == null ? undefined : state[id];
-
-        const attachments = (Array.isArray(payload?.attachments) ? payload.attachments : [])
-            .map((attachment) => attachment.id);
-
-        return statement == null || attachments.length === 0 ? state : {
-            ...state,
-            [id]: {
-                ...statement,
-                attachments: filterDistinctValues(arrayJoin(statement?.attachments, attachments))
-            }
-        };
-    })
-);
diff --git a/src/app/store/statements/reducers/error/statement-error.reducer.ts b/src/app/store/statements/reducers/error/statement-error.reducer.ts
new file mode 100644
index 0000000..15e2462
--- /dev/null
+++ b/src/app/store/statements/reducers/error/statement-error.reducer.ts
@@ -0,0 +1,24 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {createReducer, on} from "@ngrx/store";
+import {TStoreEntities, updateEntitiesObject} from "../../../../util";
+import {setStatementErrorAction} from "../../actions";
+import {IStatementErrorEntity} from "../../model";
+
+export const statementErrorReducer = createReducer<TStoreEntities<IStatementErrorEntity>>(
+    undefined,
+    on(setStatementErrorAction, (state, payload) => {
+        return payload == null ? state : updateEntitiesObject(state, [payload.error], () => payload.statementId);
+    })
+);
diff --git a/src/app/store/statements/reducers/index.ts b/src/app/store/statements/reducers/index.ts
index 317b0f6..0ee4fe8 100644
--- a/src/app/store/statements/reducers/index.ts
+++ b/src/app/store/statements/reducers/index.ts
@@ -11,7 +11,8 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
+export * from "./configuration/statement-configuration.reducer";
 export * from "./entities/statement-entities.reducer";
+export * from "./error/statement-error.reducer";
 export * from "./loading/statement-loading.reducer";
 export * from "./search/statement-search.reducer";
-export * from "./new-statement/new-statement-form.reducer";
diff --git a/src/app/store/statements/reducers/loading/statement-loading.reducer.spec.ts b/src/app/store/statements/reducers/loading/statement-loading.reducer.spec.ts
index 487d734..9970e80 100644
--- a/src/app/store/statements/reducers/loading/statement-loading.reducer.spec.ts
+++ b/src/app/store/statements/reducers/loading/statement-loading.reducer.spec.ts
@@ -12,13 +12,13 @@
  ********************************************************************************/
 
 import {setStatementLoadingAction} from "../../actions";
-import {IStatementLoadingState} from "../../model";
+import {IStatementLoadingEntity} from "../../model";
 import {statementLoadingReducer} from "./statement-loading.reducer";
 
 describe("statementLoadingReducer", () => {
 
     it("should update loading state  ", () => {
-        const initialState: IStatementLoadingState = {search: true};
+        const initialState: IStatementLoadingEntity = {search: true};
         let action = setStatementLoadingAction({loading: {}});
         let state = statementLoadingReducer(initialState, action);
         expect(state).toEqual(initialState);
diff --git a/src/app/store/statements/reducers/loading/statement-loading.reducer.ts b/src/app/store/statements/reducers/loading/statement-loading.reducer.ts
index 8ef62ea..ccdafa7 100644
--- a/src/app/store/statements/reducers/loading/statement-loading.reducer.ts
+++ b/src/app/store/statements/reducers/loading/statement-loading.reducer.ts
@@ -13,9 +13,9 @@
 
 import {createReducer, on} from "@ngrx/store";
 import {setStatementLoadingAction} from "../../actions";
-import {IStatementLoadingState} from "../../model";
+import {IStatementLoadingEntity} from "../../model";
 
-export const statementLoadingReducer = createReducer<IStatementLoadingState>(
+export const statementLoadingReducer = createReducer<IStatementLoadingEntity>(
     undefined,
     on(setStatementLoadingAction, (state, action) => ({...state, ...action.loading}))
 );
diff --git a/src/app/store/statements/reducers/new-statement-form.reducer.spec.ts b/src/app/store/statements/reducers/new-statement-form.reducer.spec.ts
deleted file mode 100644
index 3596ebd..0000000
--- a/src/app/store/statements/reducers/new-statement-form.reducer.spec.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {clearNewStatementFormAction, setNewStatementProgressAction, submitNewStatementAction} from "../actions";
-import {IStatementInfoForm, IStatementInfoFormValue} from "../model";
-import {newStatementFormReducer} from "./new-statement-form.reducer";
-
-describe("newStatementFormReducer", () => {
-
-    const value = {} as IStatementInfoFormValue;
-
-    it("should update the form value on submit", () => {
-        const initialState = undefined;
-        const action = submitNewStatementAction({value});
-        const state = newStatementFormReducer(initialState, action);
-        expect(state).toEqual({value, isLoading: true, error: undefined});
-    });
-
-    it("should clear the form", () => {
-        const initialState = {} as IStatementInfoForm;
-        const action = clearNewStatementFormAction();
-        const state = newStatementFormReducer(initialState, action);
-        expect(state).toEqual(undefined);
-    });
-
-    it("should update the progress information", () => {
-        const action = setNewStatementProgressAction({isLoading: true, error: undefined});
-        const state = newStatementFormReducer({value}, action);
-        expect(state).toEqual({value, isLoading: true, error: undefined});
-    });
-
-});
diff --git a/src/app/store/statements/reducers/new-statement-form.reducer.ts b/src/app/store/statements/reducers/new-statement-form.reducer.ts
deleted file mode 100644
index 87802d0..0000000
--- a/src/app/store/statements/reducers/new-statement-form.reducer.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createReducer, on} from "@ngrx/store";
-import {clearNewStatementFormAction, setNewStatementProgressAction, submitNewStatementAction} from "../actions";
-import {IStatementInfoForm} from "../model";
-
-export const newStatementFormReducer = createReducer<IStatementInfoForm>(
-    undefined,
-    on(submitNewStatementAction, (state, payload) => {
-        return {
-            value: payload.value,
-            isLoading: true,
-            error: undefined
-        };
-    }),
-    on(clearNewStatementFormAction, () => undefined),
-    on(setNewStatementProgressAction, (state, payload) => {
-        return {
-            ...state,
-            isLoading: payload.isLoading,
-            error: payload.error
-        };
-    })
-);
diff --git a/src/app/store/statements/reducers/new-statement/new-statement-form.reducer.spec.ts b/src/app/store/statements/reducers/new-statement/new-statement-form.reducer.spec.ts
deleted file mode 100644
index 0518e7b..0000000
--- a/src/app/store/statements/reducers/new-statement/new-statement-form.reducer.spec.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {clearNewStatementFormAction, setNewStatementProgressAction, submitNewStatementAction} from "../../actions";
-import {IStatementInfoForm, IStatementInformationFormValue} from "../../model";
-import {newStatementFormReducer} from "./new-statement-form.reducer";
-
-describe("newStatementFormReducer", () => {
-
-    const value = {} as IStatementInformationFormValue;
-
-    it("should update the form value on submit", () => {
-        const initialState = undefined;
-        const action = submitNewStatementAction({value});
-        const state = newStatementFormReducer(initialState, action);
-        expect(state).toEqual({value, isLoading: true, error: undefined});
-    });
-
-    it("should clear the form", () => {
-        const initialState = {} as IStatementInfoForm;
-        const action = clearNewStatementFormAction();
-        const state = newStatementFormReducer(initialState, action);
-        expect(state).toEqual(undefined);
-    });
-
-    it("should update the progress information", () => {
-        const action = setNewStatementProgressAction({isLoading: true, error: undefined});
-        const state = newStatementFormReducer({value}, action);
-        expect(state).toEqual({value, isLoading: true, error: undefined});
-    });
-
-});
diff --git a/src/app/store/statements/reducers/new-statement/new-statement-form.reducer.ts b/src/app/store/statements/reducers/new-statement/new-statement-form.reducer.ts
deleted file mode 100644
index e88fdcf..0000000
--- a/src/app/store/statements/reducers/new-statement/new-statement-form.reducer.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createReducer, on} from "@ngrx/store";
-import {clearNewStatementFormAction, setNewStatementProgressAction, submitNewStatementAction} from "../../actions";
-import {IStatementInfoForm} from "../../model";
-
-export const newStatementFormReducer = createReducer<IStatementInfoForm>(
-    undefined,
-    on(submitNewStatementAction, (state, payload) => {
-        return {
-            value: payload.value,
-            isLoading: true,
-            error: undefined
-        };
-    }),
-    on(clearNewStatementFormAction, () => undefined),
-    on(setNewStatementProgressAction, (state, payload) => {
-        return {
-            ...state,
-            isLoading: payload.isLoading,
-            error: payload.error
-        };
-    })
-);
diff --git a/src/app/store/statements/reducers/new.reducer.ts b/src/app/store/statements/reducers/new.reducer.ts
deleted file mode 100644
index 0a39a20..0000000
--- a/src/app/store/statements/reducers/new.reducer.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {Action, createReducer, on} from "@ngrx/store";
-import {addNewStatementAction, clearNewStatementFormAction, setNewStatementProgressAction} from "../actions";
-import {INewStatementStoreState} from "../model";
-
-export const newStatementReducer = createReducer<INewStatementStoreState, Action>(
-    {},
-    on(addNewStatementAction, (state, payload): INewStatementStoreState => {
-        return {
-            ...state,
-            form: {...payload.form}
-        };
-    }),
-    on(clearNewStatementFormAction, (state): INewStatementStoreState => {
-        return {
-            ...state,
-            form: undefined
-        };
-    }),
-    on(setNewStatementProgressAction, (state, payload): INewStatementStoreState => {
-        return {...state, isLoading: payload?.isLoading, error: payload?.error};
-    })
-);
diff --git a/src/app/store/statements/reducers/statement-entities.reducer.spec.ts b/src/app/store/statements/reducers/statement-entities.reducer.spec.ts
deleted file mode 100644
index 8816481..0000000
--- a/src/app/store/statements/reducers/statement-entities.reducer.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {fetchStatementDetailsAction, setStatementDetails} from "../actions";
-import {statementEntitiesReducer} from "./statement-entities.reducer";
-
-describe("statementEntitiesReducer", () => {
-
-    it("should not affect state on fetch action", () => {
-        const initialState = {};
-        const action = fetchStatementDetailsAction({statementId: 19});
-        const state = statementEntitiesReducer(initialState, action);
-        expect(state).toBe(initialState);
-    });
-
-    it("should create new entity of statement on set action", () => {
-        const initialState = {};
-        const entity = {info: {} as any};
-        const action = setStatementDetails({statementId: 19, details: entity});
-        const state = statementEntitiesReducer(initialState, action);
-        expect(state).toEqual({
-            19: {
-                info: {} as any
-            }
-        });
-    });
-
-    it("should update entity of statement on set action", () => {
-        const initialState = {18: {} as any, 19: {workflow: {} as any}};
-        const entity = {info: {}} as any;
-        const action = setStatementDetails({statementId: 19, details: entity});
-        const state = statementEntitiesReducer(initialState, action);
-        expect(state).toEqual({
-            18: {},
-            19: {
-                info: {} as any,
-                workflow: {} as any
-            }
-        });
-    });
-
-    it("should not change state without any id", () => {
-        const initialState = {18: {} as any, 19: {workflow: {} as any}};
-        const action = setStatementDetails({statementId: undefined, details: {}});
-        let state = statementEntitiesReducer(initialState, action);
-        expect(state).toEqual(initialState);
-        state = statementEntitiesReducer(initialState, {type: "SpecAction"});
-        expect(state).toEqual(initialState);
-    });
-
-});
diff --git a/src/app/store/statements/reducers/statement-entities.reducer.ts b/src/app/store/statements/reducers/statement-entities.reducer.ts
deleted file mode 100644
index 95253b5..0000000
--- a/src/app/store/statements/reducers/statement-entities.reducer.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createReducer, on} from "@ngrx/store";
-import {TStoreEntities} from "../../../util/store";
-import {setStatementDetails} from "../actions";
-import {IStatementEntity} from "../model";
-
-export const statementEntitiesReducer = createReducer<TStoreEntities<IStatementEntity>>(
-    {},
-    on(setStatementDetails, (state, payload) => {
-        return payload.statementId == null ? state : {
-            ...state,
-            [payload.statementId]: {
-                ...state[payload.statementId],
-                ...payload.details
-            }
-        };
-    })
-);
diff --git a/src/app/store/statements/selectors/index.ts b/src/app/store/statements/selectors/index.ts
index be2e36b..2d14f26 100644
--- a/src/app/store/statements/selectors/index.ts
+++ b/src/app/store/statements/selectors/index.ts
@@ -12,9 +12,11 @@
  ********************************************************************************/
 
 export * from "./list/statement-list.selectors";
-export * from "./new-statement-form/new-statement-form.selectors";
 export * from "./search";
+export * from "./statement-editor-form";
 export * from "./statement-information-form/statement-information-form.selectors";
 export * from "./workflow-form/workflow-form.selectors";
 
+export * from "./statement.selectors";
+export * from "./statement-configuration.selectors";
 export * from "./statements-store-state.selectors";
diff --git a/src/app/store/statements/selectors/list/statement-list.selectors.ts b/src/app/store/statements/selectors/list/statement-list.selectors.ts
index ec7acec..4590bb2 100644
--- a/src/app/store/statements/selectors/list/statement-list.selectors.ts
+++ b/src/app/store/statements/selectors/list/statement-list.selectors.ts
@@ -12,7 +12,7 @@
  ********************************************************************************/
 
 import {createSelector} from "@ngrx/store";
-import {statementEntitiesSelector} from "../statements-store-state.selectors";
+import {statementEntitiesSelector} from "../statement.selectors";
 
 export const statementListSelector = createSelector(
     statementEntitiesSelector,
diff --git a/src/app/store/statements/selectors/new-statement-form/new-statement-form.selectors.spec.ts b/src/app/store/statements/selectors/new-statement-form/new-statement-form.selectors.spec.ts
deleted file mode 100644
index 31ec7aa..0000000
--- a/src/app/store/statements/selectors/new-statement-form/new-statement-form.selectors.spec.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {IStatementInfoForm} from "../../model";
-import {
-    newStatementFormErrorSelector,
-    newStatementFormLoadingSelector,
-    newStatementFormValueSelector
-} from "./new-statement-form.selectors";
-
-describe("statementSelectors", () => {
-
-    const value = {} as any;
-    const isLoading = true;
-    const error = "Test Error";
-    const newStatementForm: IStatementInfoForm = {value, isLoading, error};
-
-    it("newStatementFormValueSelector should return a value if available", () => {
-        expect(newStatementFormValueSelector.projector(null)).toEqual(undefined);
-        expect(newStatementFormValueSelector.projector(undefined)).toEqual(undefined);
-        expect(newStatementFormValueSelector.projector({})).toEqual(undefined);
-        expect(newStatementFormValueSelector.projector({newStatementForm: null})).toEqual(undefined);
-        expect(newStatementFormValueSelector.projector({newStatementForm})).toEqual(value);
-    });
-
-    it("newStatementFormLoadingSelector should return a value if available", () => {
-        expect(newStatementFormLoadingSelector.projector(null)).toEqual(undefined);
-        expect(newStatementFormLoadingSelector.projector(undefined)).toEqual(undefined);
-        expect(newStatementFormLoadingSelector.projector({})).toEqual(undefined);
-        expect(newStatementFormLoadingSelector.projector({newStatementForm: null})).toEqual(undefined);
-        expect(newStatementFormLoadingSelector.projector({newStatementForm})).toEqual(isLoading);
-    });
-
-    it("newStatementFormErrorSelector should return a value if available", () => {
-        expect(newStatementFormErrorSelector.projector(null)).toEqual(undefined);
-        expect(newStatementFormErrorSelector.projector(undefined)).toEqual(undefined);
-        expect(newStatementFormErrorSelector.projector({})).toEqual(undefined);
-        expect(newStatementFormErrorSelector.projector({newStatementForm: null})).toEqual(undefined);
-        expect(newStatementFormErrorSelector.projector({newStatementForm})).toEqual(error);
-    });
-
-});
diff --git a/src/app/store/statements/selectors/new-statement-form/new-statement-form.selectors.ts b/src/app/store/statements/selectors/new-statement-form/new-statement-form.selectors.ts
deleted file mode 100644
index 5976880..0000000
--- a/src/app/store/statements/selectors/new-statement-form/new-statement-form.selectors.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createSelector} from "@ngrx/store";
-import {statementsStoreStateSelector} from "../statements-store-state.selectors";
-
-export const newStatementFormValueSelector = createSelector(
-    statementsStoreStateSelector,
-    (state) => state?.newStatementForm?.value
-);
-
-export const newStatementFormLoadingSelector = createSelector(
-    statementsStoreStateSelector,
-    (state) => state?.newStatementForm?.isLoading
-);
-
-export const newStatementFormErrorSelector = createSelector(
-    statementsStoreStateSelector,
-    (state) => state?.newStatementForm?.error
-);
diff --git a/src/app/store/statements/selectors/new-statement.selectors.ts b/src/app/store/statements/selectors/new-statement.selectors.ts
deleted file mode 100644
index fcd07c7..0000000
--- a/src/app/store/statements/selectors/new-statement.selectors.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createSelector} from "@ngrx/store";
-import {statementsStateSelector} from "./statements.selectors";
-
-export const newStatementStateSelector = createSelector(
-    statementsStateSelector,
-    (state) => state?.new
-);
-
-export const newStatementFormSelector = createSelector(
-    newStatementStateSelector,
-    (state) => ({...state?.form})
-);
-
-export const newStatementLoadingSelector = createSelector(
-    newStatementStateSelector,
-    (state) => state?.isLoading
-);
-
-export const newStatementErrorSelector = createSelector(
-    newStatementStateSelector,
-    (state) => state?.error
-);
diff --git a/src/app/store/statements/selectors/search/statement-search.selectors.ts b/src/app/store/statements/selectors/search/statement-search.selectors.ts
index 9ffa58f..d88147f 100644
--- a/src/app/store/statements/selectors/search/statement-search.selectors.ts
+++ b/src/app/store/statements/selectors/search/statement-search.selectors.ts
@@ -12,7 +12,8 @@
  ********************************************************************************/
 
 import {createSelector} from "@ngrx/store";
-import {getStatementSearchSelector, statementEntitiesSelector} from "../statements-store-state.selectors";
+import {statementEntitiesSelector} from "../statement.selectors";
+import {getStatementSearchSelector} from "../statements-store-state.selectors";
 
 export const getSearchContentStatementsSelector = createSelector(
     statementEntitiesSelector,
diff --git a/src/app/store/statements/selectors/statement-configuration.selectors.ts b/src/app/store/statements/selectors/statement-configuration.selectors.ts
new file mode 100644
index 0000000..8a5a82a
--- /dev/null
+++ b/src/app/store/statements/selectors/statement-configuration.selectors.ts
@@ -0,0 +1,45 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {createSelector} from "@ngrx/store";
+import {selectEntityWithIdProjector, selectPropertyProjector} from "../../../util/store";
+import {queryParamsIdSelector} from "../../root/selectors";
+import {settingsStoreSelector} from "../../settings/selectors";
+import {statementsStoreStateSelector} from "./statements-store-state.selectors";
+
+export const statementConfigurationEntitiesSelector = createSelector(
+    statementsStoreStateSelector,
+    selectPropertyProjector("configuration", {})
+);
+
+export const statementConfigurationSelector = createSelector(
+    statementConfigurationEntitiesSelector,
+    queryParamsIdSelector,
+    selectEntityWithIdProjector()
+);
+
+export const getStatementDepartmentConfigurationSelector = createSelector(
+    statementConfigurationSelector,
+    selectPropertyProjector("departments")
+);
+
+export const getStatementSectorsSelector = createSelector(
+    settingsStoreSelector,
+    statementConfigurationSelector,
+    (settings, configuration) => configuration?.sectors ? configuration.sectors : settings?.sectors
+);
+
+export const getStatementTextConfigurationSelector = createSelector(
+    statementConfigurationSelector,
+    selectPropertyProjector("text")
+);
diff --git a/src/app/features/edit/components/edit-negative-answer/index.ts b/src/app/store/statements/selectors/statement-editor-form/index.ts
similarity index 91%
copy from src/app/features/edit/components/edit-negative-answer/index.ts
copy to src/app/store/statements/selectors/statement-editor-form/index.ts
index 7378646..2e93f66 100644
--- a/src/app/features/edit/components/edit-negative-answer/index.ts
+++ b/src/app/store/statements/selectors/statement-editor-form/index.ts
@@ -11,4 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export * from "./edit-negative-answer.component";
+export * from "./statement-editor-form.selectors";
diff --git a/src/app/store/statements/selectors/statement-editor-form/statement-editor-form.selectors.ts b/src/app/store/statements/selectors/statement-editor-form/statement-editor-form.selectors.ts
new file mode 100644
index 0000000..0aece5c
--- /dev/null
+++ b/src/app/store/statements/selectors/statement-editor-form/statement-editor-form.selectors.ts
@@ -0,0 +1,68 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {createSelector} from "@ngrx/store";
+import {IAPITextArrangementItemModel, IAPITextBlockGroupModel} from "../../../../core/api/text";
+import {arrayJoin, selectArrayProjector, selectPropertyProjector, TStoreEntities} from "../../../../util/store";
+import {IStatementEditorControlConfiguration} from "../../model";
+import {getStatementTextConfigurationSelector} from "../statement-configuration.selectors";
+import {getStatementErrorSelector} from "../statements-store-state.selectors";
+
+const getTextConfigurationSelectorSelector = createSelector(
+    getStatementTextConfigurationSelector,
+    selectPropertyProjector("configuration")
+);
+
+export const getStatementStaticTextReplacementsSelector = createSelector(
+    getStatementTextConfigurationSelector,
+    selectPropertyProjector("replacements", {})
+);
+
+export const getStatementTextSelectsSelector = createSelector(
+    getTextConfigurationSelectorSelector,
+    selectPropertyProjector("selects", {})
+);
+
+export const getStatementTextBlockGroups = createSelector(
+    getTextConfigurationSelectorSelector,
+    selectArrayProjector("groups", [])
+);
+
+export const getStatementArrangementErrorSelector = createSelector(
+    getStatementErrorSelector,
+    selectArrayProjector("arrangement", [])
+);
+
+export const getStatementEditorControlConfigurationSelector = createSelector(
+    getStatementTextBlockGroups,
+    getStatementStaticTextReplacementsSelector,
+    getStatementTextSelectsSelector,
+    (
+        textBlockGroups: IAPITextBlockGroupModel[],
+        replacements: TStoreEntities<string>,
+        selects: TStoreEntities<string[]>,
+        props: IAPITextArrangementItemModel[]
+    ): IStatementEditorControlConfiguration[] => {
+        const textBlocks = arrayJoin(...textBlockGroups.map(selectPropertyProjector("textBlocks")));
+        return arrayJoin(props)
+            .map<IStatementEditorControlConfiguration>((item) => {
+                const textBlock = textBlocks.find((_) => _.id === item?.textblockId);
+                return {
+                    textBlock,
+                    selects,
+                    replacements,
+                    value: item
+                };
+            });
+    }
+);
diff --git a/src/app/store/statements/selectors/statement-information-form/statement-information-form.selectors.ts b/src/app/store/statements/selectors/statement-information-form/statement-information-form.selectors.ts
index bea0c8c..0f831ad 100644
--- a/src/app/store/statements/selectors/statement-information-form/statement-information-form.selectors.ts
+++ b/src/app/store/statements/selectors/statement-information-form/statement-information-form.selectors.ts
@@ -13,7 +13,7 @@
 
 import {createSelector} from "@ngrx/store";
 import {IStatementInformationFormValue} from "../../model";
-import {statementInfoSelector} from "../statements-store-state.selectors";
+import {statementInfoSelector} from "../statement.selectors";
 
 export const statementInformationFormValueSelector = createSelector(
     statementInfoSelector,
diff --git a/src/app/store/statements/selectors/statement.selectors.ts b/src/app/store/statements/selectors/statement.selectors.ts
new file mode 100644
index 0000000..dd22a06
--- /dev/null
+++ b/src/app/store/statements/selectors/statement.selectors.ts
@@ -0,0 +1,58 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {createSelector} from "@ngrx/store";
+import {selectArrayProjector, selectEntityWithIdProjector, selectPropertyProjector} from "../../../util";
+import {queryParamsIdSelector} from "../../root/selectors";
+import {statementsStoreStateSelector} from "./statements-store-state.selectors";
+
+export const statementEntitiesSelector = createSelector(
+    statementsStoreStateSelector,
+    selectPropertyProjector("entities", {})
+);
+
+export const statementSelector = createSelector(
+    statementEntitiesSelector,
+    queryParamsIdSelector,
+    selectEntityWithIdProjector()
+);
+
+export const statementInfoSelector = createSelector(
+    statementSelector,
+    selectPropertyProjector("info")
+);
+
+export const statementWorkflowSelector = createSelector(
+    statementSelector,
+    selectPropertyProjector("workflow")
+);
+
+export const statementParentIdsSelector = createSelector(
+    statementSelector,
+    selectArrayProjector("parentIds", [])
+);
+
+export const statementCommentsSelector = createSelector(
+    statementSelector,
+    selectArrayProjector("comments", [])
+);
+
+export const statementArrangementSelector = createSelector(
+    statementSelector,
+    selectArrayProjector("arrangement", [])
+);
+
+export const statementFileSelector = createSelector(
+    statementSelector,
+    selectPropertyProjector("file")
+);
diff --git a/src/app/store/statements/selectors/statements-store-state.selectors.spec.ts b/src/app/store/statements/selectors/statements-store-state.selectors.spec.ts
index 415d985..93323e6 100644
--- a/src/app/store/statements/selectors/statements-store-state.selectors.spec.ts
+++ b/src/app/store/statements/selectors/statements-store-state.selectors.spec.ts
@@ -11,20 +11,18 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPISectorsModel} from "../../../core/api/statements/IAPISectorsModel";
-import {IStatementEntity} from "../model";
+import {ISettingsStoreState} from "../../settings/model";
+import {IStatementConfigurationEntity} from "../model";
+import {getStatementSectorsSelector} from "./statement-configuration.selectors";
 import {
-    getStatementLoadingSelector,
-    getStatementSearchSelector,
-    getStatementSectorsSelector,
     statementCommentsSelector,
-    statementConfigurationSelector,
     statementEntitiesSelector,
     statementInfoSelector,
     statementParentIdsSelector,
     statementSelector,
     statementWorkflowSelector
-} from "./statements-store-state.selectors";
+} from "./statement.selectors";
+import {getStatementLoadingSelector, getStatementSearchSelector} from "./statements-store-state.selectors";
 
 describe("statementSelectors", () => {
 
@@ -53,10 +51,6 @@
         expectNullChecks(statementEntitiesSelector.projector, "entities", {1: 9}, {});
     });
 
-    it("statementConfigurationSelector", () => {
-        expectNullChecks(statementConfigurationSelector.projector, "configuration");
-    });
-
     it("statementInfoSelector", () => {
         expectNullChecks(statementInfoSelector.projector, "info");
     });
@@ -87,26 +81,25 @@
     });
 
     it("getStatementSectorsSelector", () => {
-        const args: { settings: IAPISectorsModel, statement: IStatementEntity } = {
-            settings: {},
-            statement: {}
-        };
-        expect(getStatementSectorsSelector.projector(args)).not.toBeDefined();
-        expect(getStatementSectorsSelector.projector(undefined)).not.toBeDefined();
-        args.settings = {
-            "Ort#Ortsteil": [
-                "Strom", "Gas", "Beleuchtung"
-            ]
-        };
-        expect(getStatementSectorsSelector.projector(args)).not.toEqual(args.settings);
-        args.statement = {
+        let settings: Partial<ISettingsStoreState> = {};
+        let configuration: Partial<IStatementConfigurationEntity> = {};
+
+        expect(getStatementSectorsSelector.projector(settings, configuration)).not.toBeDefined();
+        expect(getStatementSectorsSelector.projector(null, null)).not.toBeDefined();
+        settings = {
             sectors: {
-                "Stadt#Stadtteil": [
-                    "Strom", "Gas"
-                ]
+                "Ort#Ortsteil": ["Strom", "Gas", "Beleuchtung"]
             }
         };
-        expect(getStatementSectorsSelector.projector(args)).not.toEqual(args.statement.sectors);
+        expect(getStatementSectorsSelector.projector(settings, null)).toBe(settings.sectors);
+        expect(getStatementSectorsSelector.projector(settings, configuration)).toBe(settings.sectors);
+        configuration = {
+            sectors: {
+                "Stadt#Stadtteil": ["Strom", "Gas"]
+            }
+        };
+        expect(getStatementSectorsSelector.projector(null, configuration)).toBe(configuration.sectors);
+        expect(getStatementSectorsSelector.projector(settings, configuration)).toBe(configuration.sectors);
     });
 
 });
diff --git a/src/app/store/statements/selectors/statements-store-state.selectors.ts b/src/app/store/statements/selectors/statements-store-state.selectors.ts
index 59e0f1f..ad2bf14 100644
--- a/src/app/store/statements/selectors/statements-store-state.selectors.ts
+++ b/src/app/store/statements/selectors/statements-store-state.selectors.ts
@@ -12,62 +12,25 @@
  ********************************************************************************/
 
 import {createFeatureSelector, createSelector} from "@ngrx/store";
+import {selectEntityWithIdProjector, selectPropertyProjector} from "../../../util";
 import {queryParamsIdSelector} from "../../root/selectors";
-import {settingsStoreSelector} from "../../settings/selectors";
-import {IStatementEntity, IStatementsStoreState} from "../model";
+import {IStatementsStoreState} from "../model";
 import {STATEMENTS_NAME} from "../statements-reducers.token";
 
 export const statementsStoreStateSelector = createFeatureSelector<IStatementsStoreState>(STATEMENTS_NAME);
 
-export const statementEntitiesSelector = createSelector(
-    statementsStoreStateSelector,
-    (state) => state?.entities != null ? state.entities : {}
-);
-
-export const statementSelector = createSelector(
-    statementEntitiesSelector,
-    queryParamsIdSelector,
-    (entities, id): IStatementEntity => entities != null ? entities[id] : undefined
-);
-
-export const statementConfigurationSelector = createSelector(
-    statementSelector,
-    (statement) => statement?.configuration
-);
-
-export const statementInfoSelector = createSelector(
-    statementSelector,
-    (statement) => statement?.info
-);
-
-export const statementWorkflowSelector = createSelector(
-    statementSelector,
-    (statement) => statement?.workflow
-);
-
-export const statementParentIdsSelector = createSelector(
-    statementSelector,
-    (statement) => Array.isArray(statement?.parentIds) ? statement.parentIds : []
-);
-
-export const statementCommentsSelector = createSelector(
-    statementSelector,
-    (statement) => Array.isArray(statement?.comments) ? statement.comments : []
-);
-
-
 export const getStatementSearchSelector = createSelector(
     statementsStoreStateSelector,
-    (state) => state?.search
+    selectPropertyProjector("search")
 );
 
 export const getStatementLoadingSelector = createSelector(
     statementsStoreStateSelector,
-    (state) => state?.loading
+    selectPropertyProjector("loading")
 );
 
-export const getStatementSectorsSelector = createSelector(
-    settingsStoreSelector,
-    statementSelector,
-    (settings, statement) => statement ? statement.sectors : settings?.sectors
+export const getStatementErrorSelector = createSelector(
+    statementsStoreStateSelector,
+    queryParamsIdSelector,
+    selectEntityWithIdProjector({}, "error")
 );
diff --git a/src/app/store/statements/selectors/statements.selectors.ts b/src/app/store/statements/selectors/statements.selectors.ts
deleted file mode 100644
index 28394a1..0000000
--- a/src/app/store/statements/selectors/statements.selectors.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createFeatureSelector, createSelector} from "@ngrx/store";
-import {entitiesToArray} from "../../../util";
-import {queryParamsIdSelector} from "../../root/selectors";
-import {IStatementEntity, IStatementsStoreState} from "../model";
-import {STATEMENTS_FEATURE_NAME} from "../statements-reducers.token";
-
-export const statementsStateSelector = createFeatureSelector<IStatementsStoreState>(STATEMENTS_FEATURE_NAME);
-
-export const statementsListSelector = createSelector(
-    statementsStateSelector,
-    (state) => entitiesToArray(state?.entities)
-);
-
-export const unfinishedStatementsListSelector = createSelector(
-    statementsListSelector,
-    (list) => list.filter((statement) => !statement.finished)
-);
-
-export const finishedStatementsListSelector = createSelector(
-    statementsListSelector,
-    (list) => list.filter((statement) => statement.finished)
-);
-
-export const statementSelector = createSelector(
-    statementsStateSelector,
-    queryParamsIdSelector,
-    (state, statementId, props: { statementId: number }): IStatementEntity => {
-        statementId = props?.statementId != null ? props.statementId : statementId;
-        return state?.entities == null || statementId == null ? undefined : state.entities[statementId];
-    }
-);
diff --git a/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.spec.ts b/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.spec.ts
index 0fac432..1e6f044 100644
--- a/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.spec.ts
+++ b/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.spec.ts
@@ -115,7 +115,6 @@
         const parentIds = [18, 19];
 
         let result = workflowFormValueSelector.projector(undefined, undefined, undefined);
-        console.log("adsds", result);
         expect(result.departments).toEqual([]);
         expect(result.geographicPosition).not.toBeDefined();
         expect(result.parentIds).toEqual([]);
diff --git a/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.ts b/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.ts
index 1facbf2..1c792c9 100644
--- a/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.ts
+++ b/src/app/store/statements/selectors/workflow-form/workflow-form.selectors.ts
@@ -15,10 +15,11 @@
 import {ISelectOption, ISelectOptionGroup} from "../../../../shared/controls/select";
 import {arrayJoin, objectToArray} from "../../../../util/store";
 import {IDepartmentOptionValue, IWorkflowFormValue} from "../../model";
-import {statementConfigurationSelector, statementParentIdsSelector, statementWorkflowSelector} from "../statements-store-state.selectors";
+import {getStatementDepartmentConfigurationSelector} from "../statement-configuration.selectors";
+import {statementParentIdsSelector, statementWorkflowSelector} from "../statement.selectors";
 
 export const departmentGroupsObjectSelector = createSelector(
-    statementConfigurationSelector,
+    getStatementDepartmentConfigurationSelector,
     statementWorkflowSelector,
     (configuration, workflow) => {
         return configuration?.allDepartments != null ? configuration.allDepartments : workflow?.selectedDepartments;
@@ -26,7 +27,7 @@
 );
 
 export const selectedDepartmentGroupsObjectSelector = createSelector(
-    statementConfigurationSelector,
+    getStatementDepartmentConfigurationSelector,
     statementWorkflowSelector,
     (configuration, workflow) => {
         return workflow?.selectedDepartments == null ? configuration?.suggestedDepartments : workflow.selectedDepartments;
diff --git a/src/app/store/statements/statements-reducers.token.ts b/src/app/store/statements/statements-reducers.token.ts
index 5f9dd97..5bf5ac6 100644
--- a/src/app/store/statements/statements-reducers.token.ts
+++ b/src/app/store/statements/statements-reducers.token.ts
@@ -14,16 +14,23 @@
 import {InjectionToken} from "@angular/core";
 import {ActionReducerMap} from "@ngrx/store";
 import {IStatementsStoreState} from "./model";
-import {newStatementFormReducer, statementEntitiesReducer, statementLoadingReducer, statementSearchReducer} from "./reducers";
+import {
+    statementConfigurationReducer,
+    statementEntitiesReducer,
+    statementErrorReducer,
+    statementLoadingReducer,
+    statementSearchReducer
+} from "./reducers";
 
 export const STATEMENTS_NAME = "statements";
 
 export const STATEMENTS_REDUCER = new InjectionToken<ActionReducerMap<IStatementsStoreState>>("Statements store reducer", {
     providedIn: "root",
     factory: () => ({
+        configuration: statementConfigurationReducer,
         entities: statementEntitiesReducer,
+        error: statementErrorReducer,
         search: statementSearchReducer,
-        newStatementForm: newStatementFormReducer,
         loading: statementLoadingReducer
     })
 });
diff --git a/src/app/store/statements/statements-store.module.ts b/src/app/store/statements/statements-store.module.ts
index 840884b..2e335b4 100644
--- a/src/app/store/statements/statements-store.module.ts
+++ b/src/app/store/statements/statements-store.module.ts
@@ -16,11 +16,15 @@
 import {StoreModule} from "@ngrx/store";
 import {
     CommentsEffect,
+    CompileStatementArrangementEffect,
     FetchStatementDetailsEffect,
+    FetchTextArrangementEffect,
     SearchStatementsEffect,
     SubmitStatementInformationFormEffect,
-    SubmitWorkflowFormEffect
+    SubmitWorkflowFormEffect,
+    ValidateStatementArrangementEffect,
 } from "./effects";
+import {SubmitStatementEditorFormEffect} from "./effects/submit-statement-editor-form";
 import {STATEMENTS_NAME, STATEMENTS_REDUCER} from "./statements-reducers.token";
 
 @NgModule({
@@ -28,10 +32,14 @@
         StoreModule.forFeature(STATEMENTS_NAME, STATEMENTS_REDUCER),
         EffectsModule.forFeature([
             CommentsEffect,
+            CompileStatementArrangementEffect,
             FetchStatementDetailsEffect,
+            FetchTextArrangementEffect,
             SearchStatementsEffect,
+            SubmitStatementEditorFormEffect,
             SubmitStatementInformationFormEffect,
-            SubmitWorkflowFormEffect
+            SubmitWorkflowFormEffect,
+            ValidateStatementArrangementEffect
         ])
     ]
 })
diff --git a/src/app/store/statements/statements.actions.ts b/src/app/store/statements/statements.actions.ts
deleted file mode 100644
index 7e40f1e..0000000
--- a/src/app/store/statements/statements.actions.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createAction, props} from "@ngrx/store";
-import {IAPIStatementModel} from "../../core/api/statements/IAPIStatementModel";
-import {TStatementEntities} from "./model/IStatementEntity";
-
-export const fetchStatementsAction = createAction(
-    "[Dashboard] Fetch statements"
-);
-
-export const fetchStatementDetailsAction = createAction(
-    "[StatementDetails] Fetch statement details",
-    props<{ id: number }>()
-);
-
-export const setStatementEntitiesAction = createAction(
-    "[API] Set statement entities",
-    props<{ entities: TStatementEntities }>()
-);
-
-export const addNewStatementAction = createAction(
-    "[NewStatement] Add new statement",
-    props<Partial<IAPIStatementModel>>()
-);
diff --git a/src/app/store/statements/statements.selectors.ts b/src/app/store/statements/statements.selectors.ts
deleted file mode 100644
index 2196196..0000000
--- a/src/app/store/statements/statements.selectors.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-import {createFeatureSelector, createSelector} from "@ngrx/store";
-import {entitiesToArray} from "../../util/store.util";
-import {IStatementEntity} from "./model/IStatementEntity";
-import {IStatementsStoreState} from "./model/IStatementsStoreState";
-import {STATEMENTS_FEATURE_NAME} from "./statements-reducers.token";
-
-export const statementsStateSelector = createFeatureSelector<IStatementsStoreState>(STATEMENTS_FEATURE_NAME);
-
-export const statementsListSelector = createSelector(
-    statementsStateSelector,
-    (state) => entitiesToArray(state?.entities)
-);
-
-export const unfinishedStatementsListSelector = createSelector(
-    statementsListSelector,
-    (list) => list.filter((statement) => !statement.finished)
-);
-
-export const finishedStatementsListSelector = createSelector(
-    statementsListSelector,
-    (list) => list.filter((statement) => statement.finished)
-);
-
-export const statementSelector = createSelector(
-    statementsStateSelector,
-    (state, props: { id: number }): IStatementEntity => state?.entities == null ? undefined : state.entities[props?.id]
-);
diff --git a/src/app/shared/select/ISelectOption.ts b/src/app/test/create-attachment-file-mock.spec.ts
similarity index 66%
copy from src/app/shared/select/ISelectOption.ts
copy to src/app/test/create-attachment-file-mock.spec.ts
index fc6c436..e594761 100644
--- a/src/app/shared/select/ISelectOption.ts
+++ b/src/app/test/create-attachment-file-mock.spec.ts
@@ -11,7 +11,12 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-export interface ISelectOption {
-    label: string;
-    value: any;
+import {IAttachmentWithTags} from "../store/attachments/model";
+import {createFileMock} from "./create-file-mock.spec";
+
+export function createAttachmentFileMock(name: string): IAttachmentWithTags<File> {
+    return {
+        attachment: createFileMock(name),
+        tags: []
+    };
 }
diff --git a/src/app/test/create-attachment-model-mock.spec.ts b/src/app/test/create-attachment-model-mock.spec.ts
index e1021c3..cd58e1c 100644
--- a/src/app/test/create-attachment-model-mock.spec.ts
+++ b/src/app/test/create-attachment-model-mock.spec.ts
@@ -11,9 +11,9 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPIAttachmentModel} from "../core/api/attachments";
+import {IAPIAttachmentModel} from "../core";
 
-export function createAttachmentModelMock(attachmentId: number, tagIds: number[] = []): IAPIAttachmentModel {
+export function createAttachmentModelMock(attachmentId: number, ...tagIds: string[]): IAPIAttachmentModel {
     return {
         id: attachmentId,
         name: "Attachment" + attachmentId,
diff --git a/src/app/test/create-pagination-response-mock.spec.ts b/src/app/test/create-pagination-response-mock.spec.ts
index 0a916ee..1fad8e2 100644
--- a/src/app/test/create-pagination-response-mock.spec.ts
+++ b/src/app/test/create-pagination-response-mock.spec.ts
@@ -10,8 +10,8 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
-import {IAPIPaginationResponse} from "../core/api/shared";
 
+import {IAPIPaginationResponse} from "../core";
 
 export function createPaginationResponseMock<T>(content: T[]): IAPIPaginationResponse<T> {
     return {
diff --git a/src/app/test/create-statement-model-mock.spec.ts b/src/app/test/create-statement-model-mock.spec.ts
index 8a705b4..b3996fa 100644
--- a/src/app/test/create-statement-model-mock.spec.ts
+++ b/src/app/test/create-statement-model-mock.spec.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPIStatementModel} from "../core/api/statements";
+import {IAPIStatementModel} from "../core";
 
 export function createStatementModelMock(id: number, typeId: number = 1): IAPIStatementModel {
     return {
diff --git a/src/app/test/create-statement-text-configuration-mock.spec.ts b/src/app/test/create-statement-text-configuration-mock.spec.ts
new file mode 100644
index 0000000..e0c7615
--- /dev/null
+++ b/src/app/test/create-statement-text-configuration-mock.spec.ts
@@ -0,0 +1,64 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import {IAPIStatementTextConfigurationModel, IAPITextBlockGroupModel, IAPITextBlockModel} from "../core/api/text";
+
+export const blockTexts: string[] = [
+    "Lorem ipsum dolor sit amet, <f:name> \n",
+    "consetetur sadipscing elitr, sed diam nonumy eirmod <d:datum> tempor invidunt ut labore et dolore magna aliquyam erat <s:options>, sed diam voluptua. \n\n At vero eos et accusam et justo duo dolores et ea rebum.",
+    `Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
+     At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
+      sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
+       Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
+        Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.`,
+    "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, <t:Ansprech_Partner>, <t:Firma> no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
+    "Stet clita kasd gubergren, <f:Bearbeiter> \n no \n \n \n sea takimata sanctus est Lorem ipsum dolor sit amet."
+];
+
+export function createTextBlockModelMock(id: string, text: string): IAPITextBlockModel {
+    return {
+        id,
+        requires: [],
+        excludes: [],
+        text
+    };
+}
+
+export function createTextBlockModelGroup(id: number, size: number): IAPITextBlockGroupModel {
+    return {
+        groupName: "Textbausteingruppe " + id,
+        textBlocks: Array(size).fill(0).map((_, i) => createTextBlockModelMock("Textbaustein " + id + "." + i, blockTexts[i]))
+    };
+}
+
+export function createStatementTextConfigurationMock(): IAPIStatementTextConfigurationModel {
+    return {
+        configuration: {
+            selects: {
+                DropDown: ["Option 1", "Option 2", "Option 3"],
+                options: ["null", "eins", "zwei"]
+            },
+            groups: Array(3).fill(0)
+                .map((_, i) => createTextBlockModelGroup(i, 5))
+        },
+
+        replacements: {
+            name: "Hugo Haferkamp",
+            test: "TEST REPLACEMENT",
+            Ansprechpartner: "Donald Duck",
+            Firma: "Quak GmbH",
+            Ansprech_Partner: "Donald_Duck"
+        }
+
+    };
+}
diff --git a/src/app/test/create-workflow-data-mock.spec.ts b/src/app/test/create-workflow-data-mock.spec.ts
index 87eee50..f8b96e5 100644
--- a/src/app/test/create-workflow-data-mock.spec.ts
+++ b/src/app/test/create-workflow-data-mock.spec.ts
@@ -11,7 +11,7 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {IAPIWorkflowData} from "../core/api/statements";
+import {IAPIWorkflowData} from "../core";
 
 export function createWorkflowDataMock(partialData: Partial<IAPIWorkflowData> = {}): IAPIWorkflowData {
     return {
diff --git a/src/app/test/index.ts b/src/app/test/index.ts
index 108c792..3031ba7 100644
--- a/src/app/test/index.ts
+++ b/src/app/test/index.ts
@@ -16,4 +16,6 @@
 export * from "./create-pagination-response-mock.spec";
 export * from "./create-select-options.spec";
 export * from "./create-statement-model-mock.spec";
+export * from "./create-statement-text-configuration-mock.spec";
 export * from "./create-workflow-data-mock.spec";
+export * from "./create-attachment-file-mock.spec";
diff --git a/src/app/util/EHttpStatusCodes.ts b/src/app/util/EHttpStatusCodes.ts
deleted file mode 100644
index e5af5b6..0000000
--- a/src/app/util/EHttpStatusCodes.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export enum EHttpStatusCodes {
-    OK = 200,
-    CREATED = 201,
-    ACCEPTED = 202,
-    NON_AUTHORITATIVE_INFORMATION = 203,
-    NO_CONTENT = 204,
-    RESET_CONTENT = 205,
-    PARTIAL_CONTENT = 206,
-    MULTI_STATUS = 207,
-    ALREADY_REPORTED = 208,
-
-    BAD_REQUEST = 400,
-    UNAUTHORIZED = 401,
-    FORBIDDEN = 403,
-    NOT_FOUND = 404,
-    METHOD_NOT_ALLOWED = 405,
-    NOT_ACCEPTABLE = 406,
-    REQUEST_TIMEOUT = 408,
-    CONFLICT = 409,
-    GONE = 410,
-    LENGTH_REQUIRED = 411,
-    PRECONDITION_FAILED = 412,
-    REQUEST_ENTITY_TOO_LARGE = 413,
-    URI_TOO_LONG = 414,
-    UNSUPPORTED_MEDIA_TYPE = 415,
-    REQUESTED_RANGE_NOT_SATISFIABLE = 416,
-    EXPECTATION_FAILED = 417,
-
-    INTERNAL_SERVER_ERROR = 500,
-    NOT_IMPLEMENTED = 501,
-    BAD_GATEWAY = 502,
-    SERVICE_UNAVAILABLE = 503,
-    GATEWAY_TIMEOUT = 504
-}
diff --git a/src/app/util/events.util.ts b/src/app/util/events.util.ts
deleted file mode 100644
index eae09e4..0000000
--- a/src/app/util/events.util.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-
-import {fromEvent, Observable} from "rxjs";
-import {filter} from "rxjs/operators";
-
-/**
- * Creates an observable from an EventListener that emits when the user tabs back into the app.
- * @param doc Global document object
- */
-export function fromReturningToBrowserTabEvent(doc: Document): Observable<Event> {
-    return fromEvent(doc, "visibilitychange").pipe(
-        filter(() => doc.visibilityState !== "hidden")
-    );
-}
diff --git a/src/app/util/http.util.ts b/src/app/util/http.util.ts
deleted file mode 100644
index 2f8d20a..0000000
--- a/src/app/util/http.util.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-import {HttpErrorResponse} from "@angular/common/http";
-import {EHttpStatusCodes} from "./EHttpStatusCodes";
-
-export function isHttpErrorWithStatus(error: any, status?: EHttpStatusCodes): boolean {
-    return error instanceof HttpErrorResponse && (status == null || error.status === status);
-}
-
-export function urlJoin(...args: string[]): string {
-    let result = args.reduce((previous, current) => previous + "/" + current);
-    const indexOfProtocolSlashes = result.indexOf("://");
-    while (result.indexOf("//", indexOfProtocolSlashes === -1 ? undefined : indexOfProtocolSlashes + 3) > -1) {
-        result = result.replace("//", "/");
-    }
-    return result;
-}
diff --git a/src/app/util/http/EHttpStatusCodes.ts b/src/app/util/http/EHttpStatusCodes.ts
index e5af5b6..71dab8a 100644
--- a/src/app/util/http/EHttpStatusCodes.ts
+++ b/src/app/util/http/EHttpStatusCodes.ts
@@ -38,6 +38,7 @@
     UNSUPPORTED_MEDIA_TYPE = 415,
     REQUESTED_RANGE_NOT_SATISFIABLE = 416,
     EXPECTATION_FAILED = 417,
+    FAILED_DEPENDENCY = 424,
 
     INTERNAL_SERVER_ERROR = 500,
     NOT_IMPLEMENTED = 501,
diff --git a/src/app/util/http/http.util.spec.ts b/src/app/util/http/http.util.spec.ts
index 1781407..12633a2 100644
--- a/src/app/util/http/http.util.spec.ts
+++ b/src/app/util/http/http.util.spec.ts
@@ -11,20 +11,27 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {HttpErrorResponse} from "@angular/common/http";
+import {HttpErrorResponse, HttpHeaders, HttpResponse} from "@angular/common/http";
+import {defer, Observable, of, throwError} from "rxjs";
 import {EHttpStatusCodes} from "./EHttpStatusCodes";
-import {isHttpErrorWithStatus, objectToHttpParams, urlJoin} from "./http.util";
+import {catchHttpError, isHttpErrorWithStatus, mapHttpResponseToFile, objectToHttpParams, urlJoin} from "./http.util";
 
 describe("HttpUtil", () => {
 
-    it("should join URLs", () => {
+    it("urlJoin", () => {
         expect(urlJoin("ab", "cd")).toBe("ab/cd");
         expect(urlJoin("/ab", "///", "cd", "///ef")).toBe("/ab/cd/ef");
         expect(urlJoin("https://", "/////", "www.abc.de", "///", "/fg/")).toBe("https://www.abc.de/fg/");
         expect(urlJoin()).toBe("");
     });
 
-    it("should recognize HttpErrorResponses", () => {
+    it("objectToHttpParams", () => {
+        expect(objectToHttpParams(undefined)).toEqual({});
+        expect(objectToHttpParams(null)).toEqual({});
+        expect(objectToHttpParams({a: "1", b: 9, c: ["19", 1919]})).toEqual({a: "1", b: "9", c: ["19", "1919"]});
+    });
+
+    it("isHttpErrorWithStatus", () => {
         let httpError: any;
 
         httpError = new HttpErrorResponse({status: EHttpStatusCodes.UNAUTHORIZED});
@@ -40,10 +47,49 @@
         expect(isHttpErrorWithStatus(httpError, EHttpStatusCodes.UNAUTHORIZED, EHttpStatusCodes.FORBIDDEN)).toBeTrue();
     });
 
-    it("should transform objects to http params", () => {
-        expect(objectToHttpParams(undefined)).toEqual({});
-        expect(objectToHttpParams(null)).toEqual({});
-        expect(objectToHttpParams({a: "1", b: 9, c: ["19", 1919]})).toEqual({a: "1", b: "9", c: ["19", "1919"]});
+    it("catchHttpError", async () => {
+        const httpError = new HttpErrorResponse({status: EHttpStatusCodes.UNAUTHORIZED});
+
+        const noError$: Observable<any> = of(19);
+        const error$: Observable<any> = throwError(httpError);
+
+        let promise: Promise<any>;
+
+        promise = noError$.pipe(catchHttpError(async () => -19)).toPromise();
+        await expectAsync(promise).toBeResolvedTo(19);
+
+        promise = error$.pipe(catchHttpError(async () => -19)).toPromise();
+        await expectAsync(promise).toBeResolvedTo(-19);
+
+        promise = error$.pipe(catchHttpError(async () => -19, httpError.status)).toPromise();
+        await expectAsync(promise).toBeResolvedTo(-19);
+
+        promise = error$.pipe(catchHttpError(async () => -19, 450, 451, httpError.status, 452)).toPromise();
+        await expectAsync(promise).toBeResolvedTo(-19);
+
+        promise = error$.pipe(catchHttpError(async () => -19, 450, 451, 452)).toPromise();
+        await expectAsync(promise).toBeRejectedWith(httpError);
+    });
+
+    it("mapHttpResponseToFile", async () => {
+        const fileName = "" + Math.floor(Math.random() * 1000) + ".txt";
+        const headers = new HttpHeaders({
+            "content-disposition": `attachment; filename="${fileName}"`
+        });
+        const file = new File(["19"], "test.pdf");
+        const file$ = defer(() => of(httpResponse)).pipe(mapHttpResponseToFile());
+        let httpResponse: HttpResponse<Blob> = null;
+
+        await expectAsync(file$.toPromise()).toBeRejected();
+
+        httpResponse = new HttpResponse({body: null});
+        await expectAsync(file$.toPromise()).toBeRejected();
+
+        httpResponse = new HttpResponse({body: file, status: 200, headers});
+        const result = await file$.toPromise();
+        expect(result).toBeInstanceOf(File);
+        expect(result.name).toBe(fileName);
+        await expectAsync(result.text()).toBeResolvedTo("19");
     });
 
 });
diff --git a/src/app/util/http/http.util.ts b/src/app/util/http/http.util.ts
index 58aac99..2bae036 100644
--- a/src/app/util/http/http.util.ts
+++ b/src/app/util/http/http.util.ts
@@ -11,14 +11,15 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 
-import {HttpErrorResponse} from "@angular/common/http";
+import {HttpErrorResponse, HttpResponse} from "@angular/common/http";
+import {Observable, ObservableInput, of, throwError} from "rxjs";
+import {catchError, switchMap} from "rxjs/operators";
+import {arrayJoin} from "../store";
 import {EHttpStatusCodes} from "./EHttpStatusCodes";
 
-export function isHttpErrorWithStatus(error: any, ...status: EHttpStatusCodes[]): boolean {
-    return error instanceof HttpErrorResponse
-        && (status == null || status.find((s) => error.status === s) != null);
-}
-
+/**
+ * Safely joins multiple urls to one.
+ */
 export function urlJoin(...args: string[]): string {
     let result = args.length === 0 ? "" : args.reduce((previous, current) => previous + "/" + current);
     const indexOfProtocol = result.indexOf("://");
@@ -33,6 +34,9 @@
     return indexOfProtocol === -1 ? result : protocol + ":/" + result;
 }
 
+/**
+ * Transforms a javascript object to a HttpParams object.
+ */
 export function objectToHttpParams<T extends object>(
     object: { [key: string]: string | number | Array<string | number> }
 ): { [key: string]: string | string[] } {
@@ -47,3 +51,57 @@
         });
     return result;
 }
+
+/**
+ * Returns true if the given error is an instance of HttpErrorResponse and its status is contained in the
+ * given list of status values of the function (if empty, all status values are catched).
+ */
+export function isHttpErrorWithStatus(error: any, ...status: EHttpStatusCodes[]): boolean {
+    return error instanceof HttpErrorResponse
+        && (arrayJoin(status).length === 0 || status.some((s) => error.status === s));
+}
+
+/**
+ * Returns an rxjs operator which catches HttpErrorRespones.
+ * @param callback Function which is called to when an error occurs
+ * @param status List of all status valued which should be catched (if empty, all status values are catched).
+ */
+export function catchHttpError<T, O extends ObservableInput<any>>(
+    callback: (error: HttpErrorResponse) => O,
+    ...status: EHttpStatusCodes[]
+) {
+    return catchError<T, O | Observable<never>>((error) => {
+        if (isHttpErrorWithStatus(error, ...arrayJoin(status))) {
+            return callback(error);
+        }
+        return throwError(error);
+    });
+}
+
+/**
+ * Returns an rxjs operator function which maps a HttpResponse from the server to a Javascript file object.
+ * The filename of the returned file will be extracted from the headers of the HttpResponse.
+ */
+export function mapHttpResponseToFile() {
+    return switchMap<HttpResponse<Blob>, Observable<File>>((response) => {
+        const blob = response.body;
+        if (!(blob instanceof Blob)) {
+            return throwError(new TypeError("Http response does not contain blob data"));
+        }
+        const contentDisposition = response.headers.get("content-disposition");
+        const fileName = contentDisposition
+            .split(";")
+            .map((_) => {
+                _ = _.trim();
+                if (!_.toLowerCase().startsWith("filename=")) {
+                    return;
+                }
+                return _.slice(9)
+                    .replace(/^\s*"/, "")
+                    .replace(/"\s*$/, "");
+            })
+            .find((_) => _ != null);
+
+        return of(new File([blob], fileName, {type: blob.type}));
+    });
+}
diff --git a/src/app/util/rxjs.util.ts b/src/app/util/rxjs.util.ts
deleted file mode 100644
index 81a3219..0000000
--- a/src/app/util/rxjs.util.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-import {pipe} from "rxjs";
-import {delay, retryWhen} from "rxjs/operators";
-
-/**
- * If an error occurs, the observable is repeated after a given amount of time.
- * @param timeInMs Time in miliseconds after which the observable is repeated.
- */
-export function retryAfter<T>(timeInMs: number) {
-    return pipe(
-        retryWhen<T>((errors) => errors.pipe(delay(timeInMs)))
-    );
-}
diff --git a/src/app/util/rxjs/rxjs.util.spec.ts b/src/app/util/rxjs/rxjs.util.spec.ts
index a4a358b..4dda810 100644
--- a/src/app/util/rxjs/rxjs.util.spec.ts
+++ b/src/app/util/rxjs/rxjs.util.spec.ts
@@ -52,11 +52,10 @@
                 counter++;
                 throw error;
             }),
-            // repeat(),
             retryAfter(timeInMs)
         );
 
-        const subscription = throw$.subscribe({error: () => console.log("error"), complete: () => console.log("completed")});
+        const subscription = throw$.subscribe();
 
         expect(counter).toBe(1);
 
diff --git a/src/app/util/rxjs/rxjs.util.ts b/src/app/util/rxjs/rxjs.util.ts
index 1df7d41..98d5898 100644
--- a/src/app/util/rxjs/rxjs.util.ts
+++ b/src/app/util/rxjs/rxjs.util.ts
@@ -40,8 +40,7 @@
  * If an error occurs, error is just ignored and the observable is finished without emitting any values.
  */
 export function ignoreError<T>(): OperatorFunction<T, T> {
-    return catchError((err) => {
-        console.error(err);
+    return catchError(() => {
         return EMPTY;
     });
 }
diff --git a/src/app/util/store.util.ts b/src/app/util/store.util.ts
deleted file mode 100644
index 6362eb5..0000000
--- a/src/app/util/store.util.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************************
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- *
- * SPDX-License-Identifier: EPL-2.0
- ********************************************************************************/
-
-export type TStoreEntities<T> = { [id: number]: T };
-
-/**
- * Maps an object to a list of its values.
- */
-export function entitiesToArray<T>(entities: TStoreEntities<T>): T[] {
-    if (entities == null) {
-        return [];
-    }
-
-    return Object.keys(entities).map((key) => ({...entities[key]}));
-}
-
-/**
- * Maps a list to an entities object. For each list item, a unique id is created via the given arrow function.
- */
-export function arrayToEntities<T>(list: T[], getId: (T) => number): TStoreEntities<T> {
-    return list.reduce<TStoreEntities<T>>((entities, statement) => ({
-        ...entities,
-        [getId(statement)]: {
-            ...statement
-        }
-    }), {});
-}
diff --git a/src/app/util/store/index.ts b/src/app/util/store/index.ts
index 0bc342c..5b7f2d5 100644
--- a/src/app/util/store/index.ts
+++ b/src/app/util/store/index.ts
@@ -12,3 +12,4 @@
  ********************************************************************************/
 
 export * from "./store.util";
+export * from "./store-projectors.util";
diff --git a/src/app/util/store/store-projectors.util.spec.ts b/src/app/util/store/store-projectors.util.spec.ts
new file mode 100644
index 0000000..dbd9bc2
--- /dev/null
+++ b/src/app/util/store/store-projectors.util.spec.ts
@@ -0,0 +1,66 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+
+import {selectArrayProjector, selectEntityWithIdProjector, selectPropertyProjector} from "./store-projectors.util";
+import {TStoreEntities} from "./store.util";
+
+describe("StoreProjectorUtil", () => {
+
+    interface IStoreObject {
+        property: number;
+    }
+
+    interface IStoreArray {
+        array: number[];
+    }
+
+    it("selectEntityWithIdProjector", () => {
+        const entity: IStoreObject = {property: 19};
+        const state: TStoreEntities<IStoreObject> = {19: entity};
+        const stateWithKey: { key?: typeof state } = {key: state};
+        const defaultValue = {property: -19};
+
+        const projector = selectEntityWithIdProjector<typeof state, number>(defaultValue);
+        expect(projector(state, 19)).toBe(entity);
+        expect(projector(state, 18)).toBe(defaultValue);
+        expect(projector(null, 19)).toBe(defaultValue);
+
+        const projectorWithKey = selectEntityWithIdProjector<typeof stateWithKey, "key", number>(defaultValue, "key");
+        expect(projectorWithKey(stateWithKey, 19)).toBe(entity);
+        expect(projectorWithKey(stateWithKey, 18)).toBe(defaultValue);
+        expect(projectorWithKey(null, 19)).toBe(defaultValue);
+
+    });
+
+    it("selectPropertyProjector", () => {
+        const state: IStoreObject = {property: 19};
+        const defaultValue = -19;
+
+        const projector = selectPropertyProjector<IStoreObject, "property">("property", defaultValue);
+        expect(projector(state)).toBe(19);
+        expect(projector({property: null})).toBe(defaultValue);
+        expect(projector(null)).toBe(defaultValue);
+    });
+
+    it("selectArrayProjector", () => {
+        const state: IStoreArray = {array: [19]};
+        const defaultValue = [-19];
+
+        const projector = selectArrayProjector<IStoreArray, "array">("array", defaultValue);
+        expect(projector(state)).toBe(state.array);
+        expect(projector({array: null})).toBe(defaultValue);
+        expect(projector(null)).toBe(defaultValue);
+    });
+
+});
diff --git a/src/app/util/store/store-projectors.util.ts b/src/app/util/store/store-projectors.util.ts
new file mode 100644
index 0000000..ea5f0a0
--- /dev/null
+++ b/src/app/util/store/store-projectors.util.ts
@@ -0,0 +1,38 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+export function selectEntityWithIdProjector<TState, TKey extends keyof TState, TId extends keyof TState[TKey]>(
+    defaultValue: TState[TKey][TId], key: TKey
+): (state: TState, id: TId) => TState[TKey][TId];
+export function selectEntityWithIdProjector<TState, TKey extends keyof TState>(
+    defaultValue?: TState[TKey]
+): (state: TState, id: TKey) => TState[TKey];
+export function selectEntityWithIdProjector<T>(defaultValue?: T, key?: string): any {
+    return key == null ?
+        (state, id) => state == null || state[id] == null ? defaultValue : state[id] :
+        (state, id) => state == null || state[key] == null || state[key][id] == null ? defaultValue : state[key][id];
+}
+
+export function selectPropertyProjector<TState, TKey extends keyof TState>(
+    key: TKey,
+    defaultValue?: TState[TKey]
+): (state: TState) => TState[TKey] {
+    return (state) => state == null || state[key] == null ? defaultValue : state[key];
+}
+
+export function selectArrayProjector<TState, TKey extends keyof TState>(
+    key: TKey,
+    defaultValue?: TState[TKey] & Array<any>
+): (state: TState) => TState[TKey] {
+    return (state) => state == null || !Array.isArray(state[key]) ? defaultValue : state[key];
+}
diff --git a/src/assets/i18n/de.i18.json b/src/assets/i18n/de.i18.json
index d7ab5e3..2edc9a3 100644
--- a/src/assets/i18n/de.i18.json
+++ b/src/assets/i18n/de.i18.json
@@ -153,5 +153,20 @@
       "available": "In diesem Ortsteil sind folgende Sparten betroffen:",
       "none": "In diesem Ortsteil konnte keine zuständige Sparte ausgemacht werden."
     }
+  },
+  "textBlocks": {
+    "errors": {
+      "after": "Muss platziert werden nach: ",
+      "excludes": "Schließt aus: ",
+      "requires": "Erfordert: ",
+      "requiresAtleastOne": "Erfordert mindestens einen von: ",
+      "requiresOne": "Erfordert genau einen von: ",
+      "missingVariables": "Erfordert Platzhalterwerte: "
+    },
+    "standardBlocks": {
+      "freeText": "Freitext",
+      "pagebreak": "Seitenumbruch",
+      "newLine": "Zeilenumbruch"
+    }
   }
 }
diff --git a/src/styles/colors/_danger.styles.scss b/src/styles/colors/_danger.styles.scss
index d3d58f0..7c3d8e1 100644
--- a/src/styles/colors/_danger.styles.scss
+++ b/src/styles/colors/_danger.styles.scss
@@ -14,7 +14,7 @@
 $openk-danger-palette: (
   50 : #ffa3a3,
   100 : #ff5757,
-  200 : #ff1f1f,
+  200 : #ff1f1f, // Used for error in textblock
   300 : #d60000,
   400 : #b80000,
   500 : #990000, // Used in: Button background
diff --git a/src/theme/drag/_drag-drop.theme.scss b/src/theme/drag/_drag-drop.theme.scss
new file mode 100644
index 0000000..bd3890a
--- /dev/null
+++ b/src/theme/drag/_drag-drop.theme.scss
@@ -0,0 +1,49 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+.openk-drag-list-with-hidden-placeholder {
+
+  .cdk-drag-placeholder {
+    opacity: 0;
+    max-height: 0;
+    overflow: hidden;
+    margin: 0 !important;
+  }
+
+}
+
+.cdk-drag-placeholder {
+  margin-bottom: 0.5em;
+  opacity: 0.33;
+
+  .openk-drag-element > * {
+    opacity: 0.66;
+  }
+}
+
+.cdk-drop-list-dragging > * {
+  transition: transform 150ms cubic-bezier(0, 0, 0.2, 1);
+}
+
+.cdk-drag-animating {
+  transition: transform 150ms cubic-bezier(0, 0, 0.2, 1);
+}
+
+.cdk-drag-preview {
+  box-sizing: border-box;
+
+  .openk-drag-element {
+    border-style: solid !important;
+    box-shadow: 0 0 4px -2px rgba(0, 0, 0, 0.2);
+  }
+}
diff --git a/src/theme/misc/_cursor.theme.scss b/src/theme/misc/_cursor.theme.scss
index b1492c4..da746aa 100644
--- a/src/theme/misc/_cursor.theme.scss
+++ b/src/theme/misc/_cursor.theme.scss
@@ -18,3 +18,15 @@
 .no-drop {
   cursor: no-drop;
 }
+
+.grab {
+  cursor: grab;
+}
+
+.grabbing {
+  cursor: grabbing !important;
+
+  * {
+    cursor: grabbing !important;
+  }
+}
diff --git a/src/theme/misc/misc.theme.scss b/src/theme/misc/misc.theme.scss
index ca9050c..7f8166d 100644
--- a/src/theme/misc/misc.theme.scss
+++ b/src/theme/misc/misc.theme.scss
@@ -17,3 +17,19 @@
 .highlight-bpmn:not(.djs-connection) .djs-visual > :nth-child(1) {
   fill: get-color($openk-primary-palette, A100) !important;
 }
+
+.openk-mat-icon-button.mat-icon-button {
+  width: 1em;
+  height: 1em;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  line-height: 0;
+
+  mat-icon {
+    width: initial;
+    height: initial;
+    font-size: 1em;
+  }
+}
+
diff --git a/src/theme/openk.theme.scss b/src/theme/openk.theme.scss
index 07bd754..621a581 100644
--- a/src/theme/openk.theme.scss
+++ b/src/theme/openk.theme.scss
@@ -19,6 +19,7 @@
 @import "material/material.theme";
 @import "misc/misc.theme";
 @import "user-controls/user-controls.theme";
+@import "drag/drag-drop.theme";
 
 * {
   font-family: inherit;
@@ -34,4 +35,5 @@
 body {
   height: 100%;
   margin: 0;
+  overflow: hidden;
 }
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..6882933
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,63 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+const LicenseWebpackPlugin = require("license-webpack-plugin").LicenseWebpackPlugin;
+
+function getAdditionalModules() {
+  return [
+    "material-design-icons",
+    "source-sans-pro",
+    "@angular/platform-browser-dynamic"
+  ].map((repositoryName) => {
+    try {
+      return require(repositoryName + "/package.json");
+    } catch (e) {
+      console.warn(e);
+      return null;
+    }
+  }).filter((_) => _ != null);
+}
+
+function renderLicenses(modules) {
+  modules = modules
+    .map((module) => {
+      return {
+        ...module.packageJson,
+        licenseText: module.licenseText
+      };
+    });
+
+  modules.push(...getAdditionalModules());
+
+  return modules
+    .sort((a, b) => a.name.localeCompare(b.name))
+    .reduce((_, module) => {
+      const repositoryUrl = module.repository == null ? null : module.repository.url;
+      return _ + "\n" +
+        `${module.name} (${module.version})\n` +
+        (module.license != null ? ` * License: ${module.license}\n` : "") +
+        (module.homepage != null ? ` * Homepage: ${module.homepage}\n` : "") +
+        (module.homepage == null && repositoryUrl != null ? ` * Repository: ${repositoryUrl}\n` : "")
+    }, "");
+}
+
+module.exports = {
+  plugins: [
+    new LicenseWebpackPlugin({
+      renderLicenses: (modules) => {
+        return renderLicenses(modules);
+      },
+      outputFilename: "3rd.party.licenses.txt"
+    })
+  ]
+};
