From f55c723701843a8914060e3ba12dc8b17f80e7bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arthur=20Gu=C3=A9don?=
 <60623551+arthurgdn@users.noreply.github.com>
Date: Wed, 30 Sep 2020 17:20:35 +0200
Subject: [PATCH] adds support for personnal data (#40)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* adds support for personnal data

* modifie le form pour inclure la nationalité

* supprime le champ section et ajoute la liste des etablissements

* adapts for user

* adds validation and connects to students api for personnal data

* adds classType field and rgpd info

* corrects scholarships

* removes signup file tab

* minor presentation changes

* deletes random console.log
---
 package-lock.json                             | 1347 ++++++++++-------
 package.json                                  |   28 +-
 src/app/app.module.ts                         |    2 +
 .../members/account/account-routing.module.ts |   45 +
 .../members/account/account.component.html    |    8 +
 .../members/account/account.component.scss    |   38 +
 src/app/members/account/account.component.ts  |   24 +
 src/app/members/account/account.module.ts     |   80 +
 src/app/members/account/core/index.ts         |    2 +
 .../account/core/personal-data.model.ts       |   93 ++
 .../account/core/personal-data.service.ts     |   69 +
 .../edit-data/edit-data.component.html        |  158 ++
 .../edit-data/edit-data.component.scss        |   28 +
 .../account/edit-data/edit-data.component.ts  |  133 ++
 .../account/my-data/my-data.component.html    |   33 +
 .../account/my-data/my-data.component.scss    |    4 +
 .../account/my-data/my-data.component.ts      |   52 +
 .../account/my-file/my-file.component.html    |    8 +
 .../account/my-file/my-file.component.scss    |    0
 .../account/my-file/my-file.component.ts      |   17 +
 .../members/account/my-file/my-file.module.ts |   13 +
 .../upload/dialog/dialog.component.html       |   48 +
 .../upload/dialog/dialog.component.scss       |   17 +
 .../dialog/imageRightsDialog.component.ts     |   82 +
 .../dialog/parentalAuthDialog.component.ts    |   84 +
 .../dialog/studentChartDialog.component.ts    |   87 ++
 .../account/upload/upload.component.html      |    4 +
 .../account/upload/upload.component.scss      |    0
 .../account/upload/upload.component.ts        |   34 +
 .../members/account/upload/upload.module.ts   |   36 +
 .../account/upload/upload.service.spec.ts     |   15 +
 .../members/account/upload/upload.service.ts  |   66 +
 src/app/members/members-routing.module.ts     |    5 +
 src/app/members/members.component.ts          |    1 +
 .../account-overview.component.html           |   12 +
 .../account-overview.component.scss           |   15 +
 .../account-overview.component.ts             |    9 +
 .../student-home/student-home.component.html  |    3 +
 .../student-home/student-home.component.scss  |    2 +
 .../student-home/student-home.module.ts       |    2 +
 .../panes/two-panes/two-panes.component.scss  |    2 +-
 src/app/signup/core/index.ts                  |    2 +
 src/app/signup/core/personnalData.model.ts    |   60 +
 src/app/signup/core/personnalData.service.ts  |   22 +
 src/app/signup/signup.module.ts               |    4 +
 .../student-signup.component.html             |   46 +-
 .../student-signup.component.scss             |   15 +
 .../student-signup.component.ts               |   72 +-
 tsconfig.json                                 |    4 +-
 49 files changed, 2344 insertions(+), 587 deletions(-)
 create mode 100644 src/app/members/account/account-routing.module.ts
 create mode 100644 src/app/members/account/account.component.html
 create mode 100644 src/app/members/account/account.component.scss
 create mode 100644 src/app/members/account/account.component.ts
 create mode 100644 src/app/members/account/account.module.ts
 create mode 100644 src/app/members/account/core/index.ts
 create mode 100644 src/app/members/account/core/personal-data.model.ts
 create mode 100644 src/app/members/account/core/personal-data.service.ts
 create mode 100644 src/app/members/account/edit-data/edit-data.component.html
 create mode 100644 src/app/members/account/edit-data/edit-data.component.scss
 create mode 100644 src/app/members/account/edit-data/edit-data.component.ts
 create mode 100644 src/app/members/account/my-data/my-data.component.html
 create mode 100644 src/app/members/account/my-data/my-data.component.scss
 create mode 100644 src/app/members/account/my-data/my-data.component.ts
 create mode 100644 src/app/members/account/my-file/my-file.component.html
 create mode 100644 src/app/members/account/my-file/my-file.component.scss
 create mode 100644 src/app/members/account/my-file/my-file.component.ts
 create mode 100644 src/app/members/account/my-file/my-file.module.ts
 create mode 100644 src/app/members/account/upload/dialog/dialog.component.html
 create mode 100644 src/app/members/account/upload/dialog/dialog.component.scss
 create mode 100644 src/app/members/account/upload/dialog/imageRightsDialog.component.ts
 create mode 100644 src/app/members/account/upload/dialog/parentalAuthDialog.component.ts
 create mode 100644 src/app/members/account/upload/dialog/studentChartDialog.component.ts
 create mode 100644 src/app/members/account/upload/upload.component.html
 create mode 100644 src/app/members/account/upload/upload.component.scss
 create mode 100644 src/app/members/account/upload/upload.component.ts
 create mode 100644 src/app/members/account/upload/upload.module.ts
 create mode 100644 src/app/members/account/upload/upload.service.spec.ts
 create mode 100644 src/app/members/account/upload/upload.service.ts
 create mode 100644 src/app/members/student-home/account-overview/account-overview.component.html
 create mode 100644 src/app/members/student-home/account-overview/account-overview.component.scss
 create mode 100644 src/app/members/student-home/account-overview/account-overview.component.ts
 create mode 100644 src/app/signup/core/personnalData.model.ts
 create mode 100644 src/app/signup/core/personnalData.service.ts

diff --git a/package-lock.json b/package-lock.json
index 39f3e92..a7b79ff 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,9 +5,12 @@
   "requires": true,
   "dependencies": {
     "@agm/core": {
-      "version": "1.0.0-beta.3",
-      "resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0-beta.3.tgz",
-      "integrity": "sha512-nsyergarmMB4JCw7KGujj86ulgRYhEk8zXKRiJZdnju/irLvazQ/9Anlfsf1Rc5yph8sZrmQDwqLGZ6AqHhnzA=="
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0.tgz",
+      "integrity": "sha512-tgrobTyAHCZ3cdi21IdiBafiHLxsC5/6ncq6+f9RV+HrLg0XDuk+DA7upfdE34o2Ui3fNRDYDIgExRVFLsSPCw==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
     },
     "@angular-devkit/architect": {
       "version": "0.6.8",
@@ -160,9 +163,9 @@
       }
     },
     "@angular/cdk": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.5.tgz",
-      "integrity": "sha512-bbz8lHzY1NXPqrvHcZTOOD6+BiDNPKXC00xwzls62NPmiueBaWGwQdk7s3sa/0kCyq1ZKrPD3KQIDMyytxlzzw==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.7.tgz",
+      "integrity": "sha512-18x0U66fLD5kGQWZ9n3nb75xQouXlWs7kUDaTd8HTrHpT1s2QIAqlLd1KxfrYiVhsEC2jPQaoiae7VnBlcvkBg==",
       "requires": {
         "tslib": "^1.7.1"
       }
@@ -336,6 +339,21 @@
         "tslib": "^1.9.0"
       }
     },
+    "@angular/flex-layout": {
+      "version": "10.0.0-beta.32",
+      "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-10.0.0-beta.32.tgz",
+      "integrity": "sha512-JvuY4dUoy5jyCTIrFiq7n30Znakh1pD3nbg0h0hs2r3t1OiDQb0ZSI1wcumosG/vYHsuJQTuNhbfaIZzA1x8nA==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
+          "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
+        }
+      }
+    },
     "@angular/forms": {
       "version": "6.0.4",
       "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.4.tgz",
@@ -353,27 +371,20 @@
       }
     },
     "@angular/material": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.5.tgz",
-      "integrity": "sha512-3wDRfGqlRSo3CBA1XuPXSz7zAwZF5kotXEgbZhIAocv+nsXa73DyPNceAQ++Pu7rFR3ipg6McyggP0OCOgv7NQ==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.7.tgz",
+      "integrity": "sha512-SdNx7Xovi24Kw9eU6lkLhY/7f2M7L9F+/uh6XuPr4jbGgCUVVpeeVI5ztZhsZRbj1sN+/r1p5w8u62apWWl5Ww==",
       "requires": {
         "parse5": "^5.0.0",
         "tslib": "^1.7.1"
       }
     },
     "@angular/material-moment-adapter": {
-      "version": "6.4.5",
-      "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-6.4.5.tgz",
-      "integrity": "sha512-xgPMnntOfwTX4Uuz7g/GQ4IcRn6tiSJCGSikwTK5yRJjUEGguHmBch57q2Xjr/A+WfmGYZnVfzy3V9t/XsNKqA==",
+      "version": "6.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-6.4.7.tgz",
+      "integrity": "sha512-OGdDtpu/yRioOQXhJFCNuiOF2OgiL9VUj8ewFPi1lDtFGUFfVwU2h3hWkKLn+yuPW+DBVYla11tCNsn5dLElmA==",
       "requires": {
         "tslib": "^1.7.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.9.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
-          "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
-        }
       }
     },
     "@angular/platform-browser": {
@@ -441,14 +452,14 @@
       "dev": true
     },
     "@types/marked": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.0.tgz",
-      "integrity": "sha512-xkURX55US18wHme+O2UlqJf3Fo7FqT5VAL+OJ/zK+jP2NX57naryDHoiqt/pMIwZjDc62sRvXUWuQQxQiBdheQ=="
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz",
+      "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg=="
     },
     "@types/node": {
-      "version": "6.0.116",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.116.tgz",
-      "integrity": "sha512-vToa8YEeulfyYg1gSOeHjvvIRqrokng62VMSj2hoZrwZNcYrp2h3AWo6KeBVuymIklQUaY5zgVJvVsC4KiiLkQ==",
+      "version": "6.0.118",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.118.tgz",
+      "integrity": "sha512-N33cKXGSqhOYaPiT4xUGsYlPPDwFtQM/6QxJxuMXA/7BcySW+lkn2yigWP7vfs4daiL/7NJNU6DMCqg5N4B+xQ==",
       "dev": true
     },
     "@types/q": {
@@ -458,9 +469,9 @@
       "dev": true
     },
     "@types/selenium-webdriver": {
-      "version": "3.0.10",
-      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz",
-      "integrity": "sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA==",
+      "version": "3.0.17",
+      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz",
+      "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==",
       "dev": true
     },
     "@webassemblyjs/ast": {
@@ -710,13 +721,13 @@
     "abbrev": {
       "version": "1.0.9",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
-      "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
-      "dev": true
+      "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU="
     },
     "accepts": {
       "version": "1.3.5",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
       "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
       "requires": {
         "mime-types": "~2.1.18",
         "negotiator": "0.6.1"
@@ -745,9 +756,9 @@
       "optional": true
     },
     "adm-zip": {
-      "version": "0.4.11",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz",
-      "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==",
+      "version": "0.4.16",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
+      "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
       "dev": true
     },
     "after": {
@@ -815,8 +826,7 @@
     "amdefine": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
-      "dev": true
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
     },
     "amqplib": {
       "version": "0.5.2",
@@ -961,7 +971,6 @@
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
       "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
-      "optional": true,
       "requires": {
         "delegates": "^1.0.0",
         "readable-stream": "^2.0.6"
@@ -994,8 +1003,7 @@
     "array-find-index": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
     },
     "array-flatten": {
       "version": "1.1.1",
@@ -1133,9 +1141,7 @@
     "async-foreach": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
-      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
-      "dev": true,
-      "optional": true
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI="
     },
     "async-limiter": {
       "version": "1.0.0",
@@ -1494,8 +1500,6 @@
       "version": "0.0.9",
       "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
       "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "inherits": "~2.0.0"
       }
@@ -1525,6 +1529,7 @@
       "version": "1.18.2",
       "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
       "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+      "dev": true,
       "requires": {
         "bytes": "3.0.0",
         "content-type": "~1.0.4",
@@ -1541,7 +1546,8 @@
         "qs": {
           "version": "6.5.1",
           "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+          "dev": true
         }
       }
     },
@@ -1754,9 +1760,9 @@
       }
     },
     "browserstack": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.1.tgz",
-      "integrity": "sha512-O8VMT64P9NOLhuIoD4YngyxBURefaSdR4QdhG8l6HZ9VxtU7jc3m6jLufFwKA5gaf7fetfB2TnRJnMxyob+heg==",
+      "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"
@@ -1863,7 +1869,8 @@
     "bytes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
     },
     "cacache": {
       "version": "10.0.4",
@@ -1939,7 +1946,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true,
       "requires": {
         "camelcase": "^2.0.0",
         "map-obj": "^1.0.0"
@@ -1948,8 +1954,7 @@
         "camelcase": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-          "dev": true
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
         }
       }
     },
@@ -2095,9 +2100,9 @@
       "dev": true
     },
     "clipboard": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz",
-      "integrity": "sha512-7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz",
+      "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==",
       "optional": true,
       "requires": {
         "good-listener": "^1.2.2",
@@ -2366,8 +2371,7 @@
     "console-control-strings": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-      "optional": true
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
     },
     "constants-browserify": {
       "version": "1.0.0",
@@ -2376,9 +2380,12 @@
       "dev": true
     },
     "content-disposition": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
-      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
     },
     "content-type": {
       "version": "1.0.4",
@@ -2394,7 +2401,8 @@
     "cookie": {
       "version": "0.3.1",
       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "dev": true
     },
     "cookie-signature": {
       "version": "1.0.6",
@@ -2437,9 +2445,9 @@
       }
     },
     "core-js": {
-      "version": "2.5.7",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
-      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+      "version": "2.6.11",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
+      "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -2520,8 +2528,6 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
       "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "lru-cache": "^4.0.1",
         "which": "^1.2.9"
@@ -2622,7 +2628,6 @@
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
       "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true,
       "requires": {
         "array-find-index": "^1.0.1"
       }
@@ -2686,8 +2691,7 @@
     "decamelize": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
     },
     "decode-uri-component": {
       "version": "0.2.0",
@@ -2847,8 +2851,7 @@
     "delegates": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "optional": true
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
     },
     "depd": {
       "version": "1.1.2",
@@ -3096,6 +3099,11 @@
         "minimalistic-crypto-utils": "^1.0.0"
       }
     },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+    },
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
@@ -3186,14 +3194,26 @@
       }
     },
     "enhanced-resolve": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
-      "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+      "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.4.0",
+        "memory-fs": "^0.5.0",
         "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
       }
     },
     "ent": {
@@ -3221,7 +3241,6 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
       "requires": {
         "is-arrayish": "^0.2.1"
       }
@@ -3584,51 +3603,160 @@
       }
     },
     "express": {
-      "version": "4.16.3",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
-      "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
       "requires": {
-        "accepts": "~1.3.5",
+        "accepts": "~1.3.7",
         "array-flatten": "1.1.1",
-        "body-parser": "1.18.2",
-        "content-disposition": "0.5.2",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
         "content-type": "~1.0.4",
-        "cookie": "0.3.1",
+        "cookie": "0.4.0",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
         "depd": "~1.1.2",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
-        "finalhandler": "1.1.1",
+        "finalhandler": "~1.1.2",
         "fresh": "0.5.2",
         "merge-descriptors": "1.0.1",
         "methods": "~1.1.2",
         "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
+        "parseurl": "~1.3.3",
         "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.3",
-        "qs": "6.5.1",
-        "range-parser": "~1.2.0",
-        "safe-buffer": "5.1.1",
-        "send": "0.16.2",
-        "serve-static": "1.13.2",
-        "setprototypeof": "1.1.0",
-        "statuses": "~1.4.0",
-        "type-is": "~1.6.16",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
         "utils-merge": "1.0.1",
         "vary": "~1.1.2"
       },
       "dependencies": {
+        "accepts": {
+          "version": "1.3.7",
+          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+          "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+          "requires": {
+            "mime-types": "~2.1.24",
+            "negotiator": "0.6.2"
+          }
+        },
+        "body-parser": {
+          "version": "1.19.0",
+          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+          "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+          "requires": {
+            "bytes": "3.1.0",
+            "content-type": "~1.0.4",
+            "debug": "2.6.9",
+            "depd": "~1.1.2",
+            "http-errors": "1.7.2",
+            "iconv-lite": "0.4.24",
+            "on-finished": "~2.3.0",
+            "qs": "6.7.0",
+            "raw-body": "2.4.0",
+            "type-is": "~1.6.17"
+          }
+        },
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+        },
+        "cookie": {
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+          "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+        },
+        "http-errors": {
+          "version": "1.7.2",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+          "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.1",
+            "statuses": ">= 1.5.0 < 2",
+            "toidentifier": "1.0.0"
+          }
+        },
+        "iconv-lite": {
+          "version": "0.4.24",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        },
+        "mime-db": {
+          "version": "1.44.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+          "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
+        },
+        "mime-types": {
+          "version": "2.1.27",
+          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+          "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
+          "requires": {
+            "mime-db": "1.44.0"
+          }
+        },
+        "negotiator": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+          "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+        },
+        "parseurl": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        },
         "qs": {
-          "version": "6.5.1",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
         },
-        "safe-buffer": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "raw-body": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+          "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+          "requires": {
+            "bytes": "3.1.0",
+            "http-errors": "1.7.2",
+            "iconv-lite": "0.4.24",
+            "unpipe": "1.0.0"
+          }
+        },
+        "setprototypeof": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+          "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        },
+        "type-is": {
+          "version": "1.6.18",
+          "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+          "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+          "requires": {
+            "media-typer": "0.3.0",
+            "mime-types": "~2.1.24"
+          }
         }
       }
     },
@@ -3805,17 +3933,29 @@
       }
     },
     "finalhandler": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
-      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
       "requires": {
         "debug": "2.6.9",
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
         "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
-        "statuses": "~1.4.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
         "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "parseurl": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        }
       }
     },
     "find-cache-dir": {
@@ -3972,8 +4112,7 @@
     "fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
     "fsevents": {
       "version": "1.2.4",
@@ -4457,11 +4596,9 @@
       }
     },
     "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
-      "dev": true,
-      "optional": true,
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
       "requires": {
         "graceful-fs": "^4.1.2",
         "inherits": "~2.0.0",
@@ -4524,7 +4661,6 @@
       "version": "2.7.4",
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-      "optional": true,
       "requires": {
         "aproba": "^1.0.3",
         "console-control-strings": "^1.0.0",
@@ -4540,8 +4676,6 @@
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
       "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
-      "dev": true,
-      "optional": true,
       "requires": {
         "globule": "^1.0.0"
       }
@@ -4572,8 +4706,7 @@
     "get-stdin": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
-      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
     },
     "get-stream": {
       "version": "3.0.0",
@@ -4613,7 +4746,6 @@
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
       "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-      "dev": true,
       "requires": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -4704,11 +4836,9 @@
       }
     },
     "globule": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
-      "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
-      "dev": true,
-      "optional": true,
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
+      "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
       "requires": {
         "glob": "~7.1.1",
         "lodash": "~4.17.10",
@@ -4843,7 +4973,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
       "requires": {
         "ansi-regex": "^2.0.0"
       }
@@ -4885,8 +5014,7 @@
     "has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "optional": true
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
     },
     "has-value": {
       "version": "1.0.0",
@@ -5120,6 +5248,7 @@
       "version": "1.6.3",
       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
       "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
       "requires": {
         "depd": "~1.1.2",
         "inherits": "2.0.3",
@@ -5237,7 +5366,8 @@
     "iconv-lite": {
       "version": "0.4.19",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
-      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
+      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+      "dev": true
     },
     "ieee754": {
       "version": "1.1.12",
@@ -5311,17 +5441,14 @@
       "dev": true
     },
     "in-publish": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
-      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
-      "dev": true,
-      "optional": true
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+      "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
     },
     "indent-string": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
       "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true,
       "requires": {
         "repeating": "^2.0.0"
       }
@@ -5343,7 +5470,6 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
       "requires": {
         "once": "^1.3.0",
         "wrappy": "1"
@@ -5391,9 +5517,9 @@
       "dev": true
     },
     "ipaddr.js": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
-      "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
     },
     "is-accessor-descriptor": {
       "version": "0.1.6",
@@ -5416,8 +5542,7 @@
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
     },
     "is-binary-path": {
       "version": "1.0.1",
@@ -5529,7 +5654,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
       "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true,
       "requires": {
         "number-is-nan": "^1.0.0"
       }
@@ -5701,8 +5825,7 @@
     "is-utf8": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
     },
     "is-windows": {
       "version": "1.0.2",
@@ -5731,8 +5854,7 @@
     "isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
     },
     "isobject": {
       "version": "3.0.1",
@@ -6001,11 +6123,9 @@
       "dev": true
     },
     "js-base64": {
-      "version": "2.4.8",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz",
-      "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==",
-      "dev": true,
-      "optional": true
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
     },
     "js-tokens": {
       "version": "3.0.2",
@@ -6095,56 +6215,15 @@
       }
     },
     "jszip": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
-      "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz",
+      "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==",
       "dev": true,
       "requires": {
-        "core-js": "~2.3.0",
-        "es6-promise": "~3.0.2",
-        "lie": "~3.1.0",
+        "lie": "~3.3.0",
         "pako": "~1.0.2",
-        "readable-stream": "~2.0.6"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz",
-          "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=",
-          "dev": true
-        },
-        "es6-promise": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
-          "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
-          "dev": true
-        },
-        "process-nextick-args": {
-          "version": "1.0.7",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "2.0.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
-          "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
-          "dev": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~1.0.6",
-            "string_decoder": "~0.10.x",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        }
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
       }
     },
     "jump.js": {
@@ -6381,9 +6460,9 @@
       }
     },
     "lie": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
-      "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
       "dev": true,
       "requires": {
         "immediate": "~3.0.5"
@@ -6393,7 +6472,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
       "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-      "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
         "parse-json": "^2.2.0",
@@ -6405,8 +6483,7 @@
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
         }
       }
     },
@@ -6440,15 +6517,7 @@
     "lodash": {
       "version": "4.17.10",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
-      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
-      "dev": true
-    },
-    "lodash.assign": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
-      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
-      "dev": true,
-      "optional": true
+      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
     },
     "lodash.clonedeep": {
       "version": "4.5.0",
@@ -6461,13 +6530,6 @@
       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
       "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
     },
-    "lodash.mergewith": {
-      "version": "4.6.1",
-      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
-      "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
-      "dev": true,
-      "optional": true
-    },
     "lodash.tail": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
@@ -6732,7 +6794,6 @@
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
       "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true,
       "requires": {
         "currently-unhandled": "^0.4.1",
         "signal-exit": "^3.0.0"
@@ -6754,7 +6815,6 @@
       "version": "4.1.3",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
       "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
-      "dev": true,
       "requires": {
         "pseudomap": "^1.0.2",
         "yallist": "^2.1.2"
@@ -6826,6 +6886,15 @@
       "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
       "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",
@@ -6834,8 +6903,7 @@
     "map-obj": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
-      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
     },
     "map-visit": {
       "version": "1.0.0",
@@ -6846,9 +6914,9 @@
       }
     },
     "marked": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz",
-      "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw=="
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz",
+      "integrity": "sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA=="
     },
     "math-random": {
       "version": "1.0.1",
@@ -6893,7 +6961,6 @@
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
-      "dev": true,
       "requires": {
         "camelcase-keys": "^2.0.0",
         "decamelize": "^1.1.2",
@@ -6950,7 +7017,8 @@
     "mime": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+      "dev": true
     },
     "mime-db": {
       "version": "1.35.0",
@@ -7144,7 +7212,8 @@
     "negotiator": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true
     },
     "neo-async": {
       "version": "2.5.2",
@@ -7171,13 +7240,13 @@
       "integrity": "sha1-4nvOjIPpsFt8uZ/toM84X55SIWk="
     },
     "ngx-markdown": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-6.1.0.tgz",
-      "integrity": "sha512-+EiFsX9wcOzroaSMLWgY84uvZWxslnGKoBw34l4ZJMmoPUFDQGET5H3MB4PstGMaGlwVO03r2DuXH+/EqBUuqA==",
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-6.3.0.tgz",
+      "integrity": "sha512-h/C1KUWp3NfiOYf1fncSOvOOr1R52yDMlk7AEGacxXya+YVFb78Re96Mp7twBVwEZnUxP3lPh/HGGod2R4OpXg==",
       "requires": {
-        "@types/marked": "^0.4.0",
-        "marked": "^0.4.0",
-        "prismjs": "^1.14.0",
+        "@types/marked": "^0.4.2",
+        "marked": "^0.5.1",
+        "prismjs": "^1.15.0",
         "tslib": "^1.9.0"
       }
     },
@@ -7190,6 +7259,12 @@
         "tslib": "^1.9.0"
       }
     },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
     "no-case": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
@@ -7209,8 +7284,6 @@
       "version": "3.8.0",
       "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
       "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
-      "dev": true,
-      "optional": true,
       "requires": {
         "fstream": "^1.0.0",
         "glob": "^7.0.3",
@@ -7229,9 +7302,7 @@
         "semver": {
           "version": "5.3.0",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
-          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
-          "dev": true,
-          "optional": true
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
         }
       }
     },
@@ -7275,11 +7346,9 @@
       }
     },
     "node-sass": {
-      "version": "4.9.3",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz",
-      "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==",
-      "dev": true,
-      "optional": true,
+      "version": "4.14.1",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+      "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
       "requires": {
         "async-foreach": "^0.1.3",
         "chalk": "^1.1.1",
@@ -7288,46 +7357,27 @@
         "get-stdin": "^4.0.1",
         "glob": "^7.0.3",
         "in-publish": "^2.0.0",
-        "lodash.assign": "^4.2.0",
-        "lodash.clonedeep": "^4.3.2",
-        "lodash.mergewith": "^4.6.0",
+        "lodash": "^4.17.15",
         "meow": "^3.7.0",
         "mkdirp": "^0.5.1",
-        "nan": "^2.10.0",
+        "nan": "^2.13.2",
         "node-gyp": "^3.8.0",
         "npmlog": "^4.0.0",
-        "request": "2.87.0",
-        "sass-graph": "^2.2.4",
+        "request": "^2.88.0",
+        "sass-graph": "2.2.5",
         "stdout-stream": "^1.4.0",
         "true-case-path": "^1.0.2"
       },
       "dependencies": {
-        "ajv": {
-          "version": "5.5.2",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "co": "^4.6.0",
-            "fast-deep-equal": "^1.0.0",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.3.0"
-          }
-        },
         "ansi-styles": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true,
-          "optional": true
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
         },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "optional": true,
           "requires": {
             "ansi-styles": "^2.2.1",
             "escape-string-regexp": "^1.0.2",
@@ -7336,76 +7386,20 @@
             "supports-color": "^2.0.0"
           }
         },
-        "har-validator": {
-          "version": "5.0.3",
-          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
-          "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ajv": "^5.1.0",
-            "har-schema": "^2.0.0"
-          }
-        },
-        "oauth-sign": {
-          "version": "0.8.2",
-          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-          "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
-          "dev": true,
-          "optional": true
+        "lodash": {
+          "version": "4.17.20",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+          "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
         },
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true,
-          "optional": true
-        },
-        "request": {
-          "version": "2.87.0",
-          "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
-          "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aws-sign2": "~0.7.0",
-            "aws4": "^1.6.0",
-            "caseless": "~0.12.0",
-            "combined-stream": "~1.0.5",
-            "extend": "~3.0.1",
-            "forever-agent": "~0.6.1",
-            "form-data": "~2.3.1",
-            "har-validator": "~5.0.3",
-            "http-signature": "~1.2.0",
-            "is-typedarray": "~1.0.0",
-            "isstream": "~0.1.2",
-            "json-stringify-safe": "~5.0.1",
-            "mime-types": "~2.1.17",
-            "oauth-sign": "~0.8.2",
-            "performance-now": "^2.1.0",
-            "qs": "~6.5.1",
-            "safe-buffer": "^5.1.1",
-            "tough-cookie": "~2.3.3",
-            "tunnel-agent": "^0.6.0",
-            "uuid": "^3.1.0"
-          }
+        "nan": {
+          "version": "2.14.1",
+          "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+          "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
         },
         "supports-color": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true,
-          "optional": true
-        },
-        "tough-cookie": {
-          "version": "2.3.4",
-          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
-          "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "punycode": "^1.4.1"
-          }
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
         }
       }
     },
@@ -7501,7 +7495,6 @@
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
       "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
-      "dev": true,
       "requires": {
         "abbrev": "1"
       }
@@ -7573,7 +7566,6 @@
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "optional": true,
       "requires": {
         "are-we-there-yet": "~1.1.2",
         "console-control-strings": "~1.1.0",
@@ -7798,13 +7790,95 @@
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
     },
     "os-locale": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+      "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,
-      "optional": true,
       "requires": {
-        "lcid": "^1.0.0"
+        "execa": "^1.0.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+          "dev": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^6.0.0",
+            "get-stream": "^4.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.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
+        },
+        "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"
+          }
+        },
+        "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"
+          }
+        },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+          "dev": true
+        },
+        "pump": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+          "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
       }
     },
     "os-tmpdir": {
@@ -7821,12 +7895,24 @@
         "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",
@@ -7992,15 +8078,14 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
       "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-      "dev": true,
       "requires": {
         "error-ex": "^1.2.0"
       }
     },
     "parse5": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
-      "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
+      "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": {
@@ -8024,7 +8109,8 @@
     "parseurl": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+      "dev": true
     },
     "pascalcase": {
       "version": "0.1.1",
@@ -8045,8 +8131,7 @@
     "path-exists": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-      "dev": true
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
     },
     "path-is-absolute": {
       "version": "1.0.1",
@@ -8130,14 +8215,12 @@
     "pinkie": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
     },
     "pinkie-promise": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
       "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
       "requires": {
         "pinkie": "^2.0.0"
       }
@@ -8264,9 +8347,9 @@
       }
     },
     "prismjs": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.15.0.tgz",
-      "integrity": "sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==",
+      "version": "1.21.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz",
+      "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==",
       "requires": {
         "clipboard": "^2.0.0"
       }
@@ -8309,12 +8392,11 @@
       }
     },
     "protractor": {
-      "version": "5.4.0",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.0.tgz",
-      "integrity": "sha512-6TSYqMhUUzxr4/wN0ttSISqPMKvcVRXF4k8jOEpGWD8OioLak4KLgfzHK9FJ49IrjzRrZ+Mx1q2Op8Rk0zEcnQ==",
+      "version": "5.4.4",
+      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz",
+      "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==",
       "dev": true,
       "requires": {
-        "@types/node": "^6.0.46",
         "@types/q": "^0.0.32",
         "@types/selenium-webdriver": "^3.0.0",
         "blocking-proxy": "^1.0.0",
@@ -8323,21 +8405,33 @@
         "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.0.0",
-        "webdriver-manager": "^12.0.6"
+        "webdriver-js-extender": "2.1.0",
+        "webdriver-manager": "^12.0.6",
+        "yargs": "^12.0.5"
       },
       "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
+        },
         "ansi-styles": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
           "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
           "dev": true
         },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+          "dev": true
+        },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -8351,6 +8445,28 @@
             "supports-color": "^2.0.0"
           }
         },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.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"
+              }
+            }
+          }
+        },
         "del": {
           "version": "2.2.2",
           "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
@@ -8366,6 +8482,15 @@
             "rimraf": "^2.2.8"
           }
         },
+        "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"
+          }
+        },
         "globby": {
           "version": "5.0.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
@@ -8380,6 +8505,46 @@
             "pinkie-promise": "^2.0.0"
           }
         },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "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.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": "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
+        },
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -8395,6 +8560,27 @@
             "source-map": "^0.5.6"
           }
         },
+        "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"
+              }
+            }
+          }
+        },
         "supports-color": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -8402,9 +8588,9 @@
           "dev": true
         },
         "webdriver-manager": {
-          "version": "12.1.0",
-          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.0.tgz",
-          "integrity": "sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A==",
+          "version": "12.1.7",
+          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz",
+          "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==",
           "dev": true,
           "requires": {
             "adm-zip": "^0.4.9",
@@ -8419,16 +8605,46 @@
             "semver": "^5.3.0",
             "xml2js": "^0.4.17"
           }
+        },
+        "yargs": {
+          "version": "12.0.5",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+          "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1 || ^4.0.0",
+            "yargs-parser": "^11.1.1"
+          }
+        },
+        "yargs-parser": {
+          "version": "11.1.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+          "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
         }
       }
     },
     "proxy-addr": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
-      "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
       "requires": {
         "forwarded": "~0.1.2",
-        "ipaddr.js": "1.8.0"
+        "ipaddr.js": "1.9.1"
       }
     },
     "proxy-agent": {
@@ -8476,8 +8692,7 @@
     "pseudomap": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
     },
     "psl": {
       "version": "1.1.29",
@@ -8597,12 +8812,14 @@
     "range-parser": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "dev": true
     },
     "raw-body": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
       "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+      "dev": true,
       "requires": {
         "bytes": "3.0.0",
         "http-errors": "1.6.2",
@@ -8613,12 +8830,14 @@
         "depd": {
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
-          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
+          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+          "dev": true
         },
         "http-errors": {
           "version": "1.6.2",
           "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
           "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+          "dev": true,
           "requires": {
             "depd": "1.1.1",
             "inherits": "2.0.3",
@@ -8629,7 +8848,8 @@
         "setprototypeof": {
           "version": "1.0.3",
           "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
+          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+          "dev": true
         }
       }
     },
@@ -8672,7 +8892,6 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
       "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-      "dev": true,
       "requires": {
         "load-json-file": "^1.0.0",
         "normalize-package-data": "^2.3.2",
@@ -8683,7 +8902,6 @@
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
           "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-          "dev": true,
           "requires": {
             "graceful-fs": "^4.1.2",
             "pify": "^2.0.0",
@@ -8693,8 +8911,7 @@
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
         }
       }
     },
@@ -8702,7 +8919,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
       "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "dev": true,
       "requires": {
         "find-up": "^1.0.0",
         "read-pkg": "^1.0.0"
@@ -8712,7 +8928,6 @@
           "version": "1.1.2",
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
           "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-          "dev": true,
           "requires": {
             "path-exists": "^2.0.0",
             "pinkie-promise": "^2.0.0"
@@ -8722,7 +8937,6 @@
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
           "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-          "dev": true,
           "requires": {
             "pinkie-promise": "^2.0.0"
           }
@@ -8758,7 +8972,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
       "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true,
       "requires": {
         "indent-string": "^2.1.0",
         "strip-indent": "^1.0.1"
@@ -8928,7 +9141,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
       "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true,
       "requires": {
         "is-finite": "^1.0.0"
       }
@@ -8985,8 +9197,7 @@
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
     },
     "require-from-string": {
       "version": "2.0.2",
@@ -9058,7 +9269,6 @@
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
       "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-      "dev": true,
       "requires": {
         "glob": "^7.0.5"
       }
@@ -9083,9 +9293,9 @@
       }
     },
     "rxjs": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
-      "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz",
+      "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==",
       "requires": {
         "tslib": "^1.9.0"
       }
@@ -9109,74 +9319,141 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
     },
     "sass-graph": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
-      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
-      "dev": true,
-      "optional": true,
+      "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+      "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
       "requires": {
         "glob": "^7.0.0",
         "lodash": "^4.0.0",
         "scss-tokenizer": "^0.2.3",
-        "yargs": "^7.0.0"
+        "yargs": "^13.3.2"
       },
       "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=="
+        },
         "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
-          "dev": true,
-          "optional": true
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
         },
         "cliui": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-          "dev": true,
-          "optional": true,
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
           "requires": {
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wrap-ansi": "^2.0.0"
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
           }
         },
-        "y18n": {
-          "version": "3.2.1",
-          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-          "dev": true,
-          "optional": true
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "requires": {
+            "locate-path": "^3.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=="
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+          "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==",
+          "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=="
+        },
+        "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=="
+        },
+        "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==",
+          "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==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        },
+        "wrap-ansi": {
+          "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==",
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
         },
         "yargs": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
-          "dev": true,
-          "optional": true,
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
           "requires": {
-            "camelcase": "^3.0.0",
-            "cliui": "^3.2.0",
-            "decamelize": "^1.1.1",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^1.4.0",
-            "read-pkg-up": "^1.0.1",
+            "cliui": "^5.0.0",
+            "find-up": "^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": "^1.0.2",
-            "which-module": "^1.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^5.0.0"
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
           }
         },
         "yargs-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
-          "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
-          "dev": true,
-          "optional": true,
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
           "requires": {
-            "camelcase": "^3.0.0"
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
           }
         }
       }
@@ -9224,8 +9501,6 @@
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
       "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
-      "dev": true,
-      "optional": true,
       "requires": {
         "js-base64": "^2.1.8",
         "source-map": "^0.4.2"
@@ -9235,8 +9510,6 @@
           "version": "0.4.4",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
           "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-          "dev": true,
-          "optional": true,
           "requires": {
             "amdefine": ">=0.0.4"
           }
@@ -9319,9 +9592,9 @@
       }
     },
     "send": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
-      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
       "requires": {
         "debug": "2.6.9",
         "depd": "~1.1.2",
@@ -9330,12 +9603,56 @@
         "escape-html": "~1.0.3",
         "etag": "~1.8.1",
         "fresh": "0.5.2",
-        "http-errors": "~1.6.2",
-        "mime": "1.4.1",
-        "ms": "2.0.0",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
         "on-finished": "~2.3.0",
-        "range-parser": "~1.2.0",
-        "statuses": "~1.4.0"
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "http-errors": {
+          "version": "1.7.3",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+          "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.4",
+            "setprototypeof": "1.1.1",
+            "statuses": ">= 1.5.0 < 2",
+            "toidentifier": "1.0.0"
+          }
+        },
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+          "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+        },
+        "range-parser": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+          "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+        },
+        "setprototypeof": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+          "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+        },
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        }
       }
     },
     "serialize-javascript": {
@@ -9360,14 +9677,21 @@
       }
     },
     "serve-static": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
-      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
       "requires": {
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
-        "parseurl": "~1.3.2",
-        "send": "0.16.2"
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      },
+      "dependencies": {
+        "parseurl": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+          "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+        }
       }
     },
     "set-blocking": {
@@ -9410,7 +9734,8 @@
     "setprototypeof": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "dev": true
     },
     "sha.js": {
       "version": "2.4.11",
@@ -9491,9 +9816,9 @@
       "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
     },
     "slugify": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.1.tgz",
-      "integrity": "sha512-6BwyhjF5tG5P8s+0DPNyJmBSBePG6iMyhjvIW5zGdA3tFik9PtK+yNkZgTeiroCRGZYgkHftFA62tGVK1EI9Kw=="
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.5.tgz",
+      "integrity": "sha512-WpECLAgYaxHoEAJ8Q1Lo8HOs1ngn7LN7QjXgOLbmmfkcWvosyk4ZTXkTzKyhngK640USTZUlgoQJfED1kz5fnQ=="
     },
     "smart-buffer": {
       "version": "1.1.15",
@@ -9936,14 +10261,13 @@
     "statuses": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+      "dev": true
     },
     "stdout-stream": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
-      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
-      "dev": true,
-      "optional": true,
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+      "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
       "requires": {
         "readable-stream": "^2.0.1"
       }
@@ -10047,7 +10371,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
       "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-      "dev": true,
       "requires": {
         "is-utf8": "^0.2.0"
       }
@@ -10062,7 +10385,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
       "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true,
       "requires": {
         "get-stdin": "^4.0.1"
       }
@@ -10153,14 +10475,12 @@
       "dev": true
     },
     "tar": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
-      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
-      "dev": true,
-      "optional": true,
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+      "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
       "requires": {
         "block-stream": "*",
-        "fstream": "^1.0.2",
+        "fstream": "^1.0.12",
         "inherits": "2"
       }
     },
@@ -10231,9 +10551,9 @@
       "optional": true
     },
     "tiny-emitter": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
-      "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+      "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
       "optional": true
     },
     "tmp": {
@@ -10301,6 +10621,11 @@
         "repeat-string": "^1.6.1"
       }
     },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+    },
     "toposort": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
@@ -10332,8 +10657,7 @@
     "trim-newlines": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
-      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
     },
     "trim-right": {
       "version": "1.0.1",
@@ -10342,29 +10666,11 @@
       "dev": true
     },
     "true-case-path": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
-      "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
-      "dev": true,
-      "optional": true,
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+      "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
       "requires": {
-        "glob": "^6.0.4"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "6.0.4",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
-          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "2 || 3",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        }
+        "glob": "^7.1.2"
       }
     },
     "ts-node": {
@@ -10521,6 +10827,7 @@
       "version": "1.6.16",
       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
       "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
       "requires": {
         "media-typer": "0.3.0",
         "mime-types": "~2.1.18"
@@ -10988,9 +11295,9 @@
       }
     },
     "web-animations-js": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.1.tgz",
-      "integrity": "sha1-Om2bwVGWN3qQ+OKAP6UmIWWwRRA="
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/web-animations-js/-/web-animations-js-2.3.2.tgz",
+      "integrity": "sha512-TOMFWtQdxzjWp8qx4DAraTWTsdhxVSiWa6NkPFSaPtZ1diKUxTn4yTix73A1euG1WbSOMMPcY51cnjTIHrGtDA=="
     },
     "webassemblyjs": {
       "version": "1.4.3",
@@ -11006,9 +11313,9 @@
       }
     },
     "webdriver-js-extender": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz",
-      "integrity": "sha512-fbyKiVu3azzIc5d4+26YfuPQcFTlgFQV5yQ/0OQj4Ybkl4g1YQuIPskf5v5wqwRJhHJnPHthB6tqCjWHOKLWag==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
+      "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==",
       "dev": true,
       "requires": {
         "@types/selenium-webdriver": "^3.0.0",
@@ -11323,23 +11630,19 @@
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
       "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
       "requires": {
         "isexe": "^2.0.0"
       }
     },
     "which-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
-      "dev": true,
-      "optional": true
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
     },
     "wide-align": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
       "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-      "optional": true,
       "requires": {
         "string-width": "^1.0.2 || 2"
       }
@@ -11459,13 +11762,13 @@
       "dev": true
     },
     "xml2js": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
-      "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+      "version": "0.4.23",
+      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
       "dev": true,
       "requires": {
         "sax": ">=0.6.0",
-        "xmlbuilder": "~9.0.1"
+        "xmlbuilder": "~11.0.0"
       },
       "dependencies": {
         "sax": {
@@ -11477,9 +11780,9 @@
       }
     },
     "xmlbuilder": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
       "dev": true
     },
     "xmlhttprequest-ssl": {
@@ -11513,14 +11816,12 @@
     "y18n": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
-      "dev": true
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
     },
     "yallist": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "dev": true
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
     },
     "yargs": {
       "version": "3.10.0",
@@ -11568,9 +11869,9 @@
       }
     },
     "zone.js": {
-      "version": "0.8.26",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz",
-      "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA=="
+      "version": "0.8.29",
+      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz",
+      "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ=="
     }
   }
 }
diff --git a/package.json b/package.json
index 88923fc..7017524 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
   },
   "private": true,
   "dependencies": {
-    "@agm/core": "^1.0.0-beta.3",
+    "@agm/core": "^1.0.0",
     "@angular/animations": "6.0.4",
     "@angular/cdk": "^6.2.1",
     "@angular/cli": "6.0.8",
@@ -21,35 +21,37 @@
     "@angular/compiler": "6.0.4",
     "@angular/compiler-cli": "6.0.4",
     "@angular/core": "6.0.4",
+    "@angular/flex-layout": "^10.0.0-beta.32",
     "@angular/forms": "6.0.4",
     "@angular/http": "6.0.4",
-    "@angular/material": "^6.2.1",
-    "@angular/material-moment-adapter": "^6.3.0",
+    "@angular/material": "^6.4.7",
+    "@angular/material-moment-adapter": "^6.4.7",
     "@angular/platform-browser": "6.0.4",
     "@angular/platform-browser-dynamic": "6.0.4",
     "@angular/router": "6.0.4",
     "autoprefixer": "^8.6.2",
     "core-js": "^2.5.7",
-    "express": "^4.16.3",
-    "fuse.js": "^3.2.0",
+    "express": "^4.17.1",
+    "fuse.js": "^3.2.1",
     "hammerjs": "^2.0.8",
     "jump.js": "^1.0.2",
     "ng2-emoji": "^0.2.0",
-    "ngx-markdown": "^6.0.1",
+    "ngx-markdown": "^6.3.0",
     "ngx-moment": "^2.0.0",
+    "node-sass": "^4.14.1",
     "remove-markdown": "^0.2.2",
-    "rxjs": "^6.2.0",
-    "slugify": "^1.3.0",
+    "rxjs": "^6.0.0",
+    "slugify": "^1.4.5",
     "typescript": "2.7.2",
-    "web-animations-js": "^2.3.1",
-    "zone.js": "^0.8.26"
+    "web-animations-js": "^2.3.2",
+    "zone.js": "^0.8.29"
   },
   "devDependencies": {
     "@angular-devkit/build-angular": "~0.6.8",
     "@types/jasmine": "2.5.38",
-    "@types/node": "~6.0.60",
+    "@types/node": "^6.0.118",
     "codelyzer": "~2.0.0",
-    "enhanced-resolve": "^4.0.0",
+    "enhanced-resolve": "^4.3.0",
     "jasmine-core": "~2.5.2",
     "jasmine-spec-reporter": "~3.2.0",
     "karma": "^2.0.2",
@@ -58,7 +60,7 @@
     "karma-coverage-istanbul-reporter": "^0.2.0",
     "karma-jasmine": "~1.1.0",
     "karma-jasmine-html-reporter": "^0.2.2",
-    "protractor": "^5.3.2",
+    "protractor": "^5.4.4",
     "ts-node": "~2.0.0",
     "tslint": "~4.5.0"
   },
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 8c6fa79..2210e3c 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -14,6 +14,7 @@ import { MomentModule } from 'ngx-moment';
 import {
   MatFormFieldModule,
   MatInputModule,
+  MatOptionModule,
   MatSelectModule,
   MatButtonModule,
   MatRadioModule,
@@ -60,6 +61,7 @@ registerLocaleData(localeFR);
     AppRoutingModule,
     MatFormFieldModule,
     MatInputModule,
+    MatOptionModule,
     MatSelectModule,
     MatRadioModule,
     MatButtonModule,
diff --git a/src/app/members/account/account-routing.module.ts b/src/app/members/account/account-routing.module.ts
new file mode 100644
index 0000000..6439045
--- /dev/null
+++ b/src/app/members/account/account-routing.module.ts
@@ -0,0 +1,45 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+
+//Components
+import { AccountComponent } from './account.component';
+import {MyDataComponent} from './my-data/my-data.component'
+import {EditDataComponent} from './edit-data/edit-data.component'
+import {MyFileComponent} from './my-file/my-file.component'
+import { PersonalDataResolver } from './core'
+
+
+const routes: Routes = [
+  {
+    path: '',
+    data: { title: 'Mon Compte' },
+    component: AccountComponent,
+    children: [
+      {
+        path: 'donnees', 
+        component: MyDataComponent,
+        resolve : {
+          'personalData' : PersonalDataResolver
+        },
+        
+      },
+      {
+        path: 'modifier_donnees', component: EditDataComponent,
+        resolve : {
+          'personalData' : PersonalDataResolver
+        },
+        
+      },
+      // {
+      //   path: 'mon_dossier', component: MyFileComponent,
+
+      // }
+    ],
+  },
+];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class AccountRoutingModule { }
diff --git a/src/app/members/account/account.component.html b/src/app/members/account/account.component.html
new file mode 100644
index 0000000..1838fd5
--- /dev/null
+++ b/src/app/members/account/account.component.html
@@ -0,0 +1,8 @@
+<h1 class="text-center">Mon Compte</h1>
+<div class="centered-links">
+    <app-nav-group [links]="navLinks" theme="blue"   [theme]="theme"></app-nav-group>
+</div>
+
+<messages></messages>
+<router-outlet></router-outlet>
+
diff --git a/src/app/members/account/account.component.scss b/src/app/members/account/account.component.scss
new file mode 100644
index 0000000..0ac99de
--- /dev/null
+++ b/src/app/members/account/account.component.scss
@@ -0,0 +1,38 @@
+@import '~app/showcase-site/sass/mixins';
+
+#page {
+  @include margin-page;
+}
+
+$grid-gap: 1em;
+
+ul.tabs {
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+  display: flex;
+  flex-flow: row;
+  justify-content: space-around;
+  
+  text-align: center;
+  margin-bottom: 2em;
+  li {
+    padding: 1em;
+    cursor: pointer;
+    color: $color-muted;
+    font-weight: bold;
+    &:hover {
+      color: $color-text;
+    }
+    &.active {
+      color: $color-dark-blue;
+    }
+  }
+  border-bottom: 1px solid $color-light-gray;
+}
+
+.centered-links{
+  display:flex;
+  flex-direction: row;
+  justify-content: space-around;
+}
\ No newline at end of file
diff --git a/src/app/members/account/account.component.ts b/src/app/members/account/account.component.ts
new file mode 100644
index 0000000..567ee3f
--- /dev/null
+++ b/src/app/members/account/account.component.ts
@@ -0,0 +1,24 @@
+import { Component, OnInit } from '@angular/core';
+import { Router } from '@angular/router';
+import { Link } from 'app/shared';
+
+@Component({
+  selector: 'app-account',
+  templateUrl: './account.component.html',
+  styleUrls: ['./account.component.scss']
+})
+export class AccountComponent implements OnInit {
+
+  constructor( private router: Router ) { }
+  
+  navLinks: Link[] = [
+    { href: './donnees', text: 'Mes données' },
+    { href: './modifier_donnees', text: 'Modifier mes données' },
+    //{ href: './mon_dossier', text: 'Mon dossier' },
+    
+  ];
+  ngOnInit() {
+    this.router.navigate(['./membres/compte/modifier_donnees'])
+  }
+
+}
diff --git a/src/app/members/account/account.module.ts b/src/app/members/account/account.module.ts
new file mode 100644
index 0000000..8d19200
--- /dev/null
+++ b/src/app/members/account/account.module.ts
@@ -0,0 +1,80 @@
+import { NgModule } from '@angular/core';
+
+
+// Modules
+import { CommonModule } from '@angular/common';
+import { FormsModule, ReactiveFormsModule} from '@angular/forms';
+import { RouterModule } from '@angular/router';
+import { AgmCoreModule } from '@agm/core';
+import { MomentModule } from 'ngx-moment';
+import { CoreModule } from 'app/core';
+import { SharedModule } from 'app/shared';
+import { AccountRoutingModule } from './account-routing.module';
+
+import {
+  MatFormFieldModule,
+  MatInputModule,
+  MatSelectModule,
+  MatButtonModule,
+  MatSnackBarModule,
+  MatCheckboxModule,
+  MatIconModule,
+  MatSlideToggleModule,
+  MatTableModule,
+  MatDividerModule,
+  MatProgressBarModule,
+  MatDialogModule,
+  MatListModule,
+  
+} from '@angular/material';
+
+// Components
+import {AccountComponent} from './account.component'
+import {MyDataComponent} from './my-data/my-data.component'
+import {EditDataComponent} from './edit-data/edit-data.component'
+import {MyFileComponent} from './my-file/my-file.component'
+import {UploadComponent} from './upload/upload.component'
+import {  StudentChartDialogComponent } from './upload/dialog/studentChartDialog.component'
+import {ImageRightsDialogComponent} from './upload/dialog/imageRightsDialog.component'
+import {ParentalAuthDialogComponent} from './upload/dialog/parentalAuthDialog.component'
+@NgModule({
+  imports: [
+    CommonModule,
+    FormsModule,
+    MomentModule,
+    RouterModule,
+    AgmCoreModule,
+    CoreModule,
+    SharedModule,
+    AccountRoutingModule,
+    ReactiveFormsModule,
+    // Material
+    MatFormFieldModule,
+    MatSelectModule,
+    MatInputModule,
+    MatButtonModule,
+    MatSnackBarModule,
+    MatCheckboxModule,
+    MatIconModule,
+    MatSlideToggleModule,
+    MatTableModule,
+    MatDividerModule,
+    MatProgressBarModule,
+    MatButtonModule,
+    MatDialogModule,
+    MatListModule,
+    
+  ],
+  declarations: [
+    AccountComponent,
+    MyDataComponent,
+    EditDataComponent,
+    MyFileComponent,
+    UploadComponent,
+    ParentalAuthDialogComponent,
+    ImageRightsDialogComponent,
+    StudentChartDialogComponent
+  ],
+  entryComponents:[ParentalAuthDialogComponent,ImageRightsDialogComponent,StudentChartDialogComponent]
+})
+export class AccountModule { }
diff --git a/src/app/members/account/core/index.ts b/src/app/members/account/core/index.ts
new file mode 100644
index 0000000..93715ac
--- /dev/null
+++ b/src/app/members/account/core/index.ts
@@ -0,0 +1,2 @@
+export * from './personal-data.model';
+export * from './personal-data.service';
diff --git a/src/app/members/account/core/personal-data.model.ts b/src/app/members/account/core/personal-data.model.ts
new file mode 100644
index 0000000..468eaa4
--- /dev/null
+++ b/src/app/members/account/core/personal-data.model.ts
@@ -0,0 +1,93 @@
+import { User, UserAdapter, IAdapter } from 'app/core';
+
+export class PersonalDataSchema {
+    
+    
+    user_id: string;
+    url : string;
+    firstName:string;
+    lastName: string;
+    gender: string;
+    nationality: string;
+    addressNumber:number;
+    street:string;
+    zipCode:number;
+    city:string;
+    personalPhone:string;
+    parentsPhone:string;
+    parentsEmail:string;
+    school:string;
+    grade:string;
+    classType:string;
+    specialTeaching:string;
+    scholarship:string;
+    fatherActivity:string;
+    motherActivity:string;
+    parentsStatus:string;
+    dependantsNumber:number;
+}
+
+export class PersonalData extends PersonalDataSchema {
+
+  constructor(args: PersonalDataSchema) {
+    super();
+    Object.assign(this, args);
+  }
+}
+
+export class PersonalDataAdapter implements IAdapter<PersonalData> {
+
+    private userAdapter = new UserAdapter();
+
+  adapt(data: any): PersonalData {
+    return new PersonalData({
+        url : data.url,
+        user_id: data.user_id,
+        firstName: data.user.first_name,
+        lastName: data.user.last_name,
+        gender: data.gender?data.gender:'',
+        nationality : data.nationality?data.nationality:'',
+        addressNumber: data.addressNumber?data.addressNumber:'',
+        street:data.street?data.street:'',
+        zipCode:data.zipCode?data.zipCode:'',
+        city:data.city?data.city:'',
+        personalPhone:data.personalPhone?data.personalPhone:'',
+        parentsPhone:data.parentsPhone?data.parentsPhone:'',
+        parentsEmail:data.parentsEmail?data.parentsEmail:'',
+        school:data.school?data.school:'',
+        grade:data.grade?data.grade:'',
+        classType : data.classType?data.classType:'',
+        specialTeaching:data.specialTeaching?data.specialTeaching:'',
+        scholarship:data.scholarship?data.scholarship:'',
+        fatherActivity:data.fatherActivity?data.fatherActivity:'',
+        motherActivity:data.motherActivity?data.motherActivity:'',
+        parentsStatus:data.parentsStatus?data.parentsStatus:'',
+        dependantsNumber:data.dependantsNumber?data.dependantsNumber:''
+    });
+  }
+
+  encode(obj: PersonalData): any {
+    return {
+        user_id: obj.user_id,
+        url : obj.url,
+        gender: obj.gender,
+        nationality: obj.nationality,
+        addressNumber: obj.addressNumber,
+        street:obj.street,
+        zipCode:obj.zipCode,
+        city:obj.city,
+        personalPhone:obj.personalPhone,
+        parentsPhone:obj.parentsPhone,
+        parentsEmail:obj.parentsEmail,
+        school:obj.school,
+        grade:obj.grade,
+        classType:obj.classType,
+        specialTeaching:obj.specialTeaching,
+        scholarship:obj.scholarship,
+        fatherActivity:obj.fatherActivity,
+        motherActivity:obj.motherActivity,
+        parentsStatus:obj.parentsStatus,
+        dependantsNumber:obj.dependantsNumber
+    }
+  }
+}
diff --git a/src/app/members/account/core/personal-data.service.ts b/src/app/members/account/core/personal-data.service.ts
new file mode 100644
index 0000000..46be693
--- /dev/null
+++ b/src/app/members/account/core/personal-data.service.ts
@@ -0,0 +1,69 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { Resolve,ActivatedRouteSnapshot } from '@angular/router';
+import { Observable, of, forkJoin } from 'rxjs';
+import { tap, map, filter,catchError } from 'rxjs/operators';
+import { ApiService, AuthService,} from 'app/core';
+import {PersonalDataAdapter,PersonalData} from './personal-data.model'
+
+
+@Injectable({
+  providedIn: 'root'
+})
+export class PersonalDataService extends ApiService {
+
+  //api url
+  private baseUrl = this.apiUrl + 'students';
+  private adapter = new PersonalDataAdapter();
+
+  constructor(
+    private http: HttpClient,
+    private auth: AuthService
+  ) { super();  }
+
+  //get personalData by user
+   get(filters: any): Observable<PersonalData> {
+    const url = this.baseUrl;
+    return this.http.get(url, { params: filters }).pipe(
+      map((data: any) => {
+        
+        return data.map(item => this.adapter.adapt(item))}),
+    );
+  }
+  retrieve(id: number | string): Observable<PersonalData> {
+    let url = this.baseUrl ;
+    return this.http.get<PersonalData>(url).pipe(
+      map(v =>{
+        return  this.adapter.adapt(v[0])}),
+    );
+  }
+
+  forUser(userId: number): Observable<PersonalData> {
+    return this.get({ user_id: String(userId)});
+  }
+  //edit personalData for a user
+  edit(personalData: PersonalData): Observable<any> {
+    
+    const body: any = this.adapter.encode(personalData);
+    return this.http.put(personalData.url, body);
+  }  
+}
+
+@Injectable({
+    providedIn: 'root'
+  })
+export class PersonalDataResolver implements Resolve<PersonalData>{
+    
+    constructor(private service: PersonalDataService, private auth: AuthService) { }
+  //fetch user
+  
+    resolve(route: ActivatedRouteSnapshot): Observable<PersonalData> {
+      const user = this.auth.getUserSnapshot();
+      return this.service.retrieve(user.id).pipe(
+        catchError(e => of(null))
+      );
+    
+  }
+}
+
+
diff --git a/src/app/members/account/edit-data/edit-data.component.html b/src/app/members/account/edit-data/edit-data.component.html
new file mode 100644
index 0000000..5d8fd82
--- /dev/null
+++ b/src/app/members/account/edit-data/edit-data.component.html
@@ -0,0 +1,158 @@
+<app-form-page>
+    <form [formGroup]="formGroup" (ngSubmit)="submit()">
+        <h2>Modifier mes données personnelles</h2>
+        <p class="text-center">Informations personnelles</p>
+        <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="firstName" placeholder="Prénom" required>
+        </mat-form-field>
+        <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="lastName" placeholder="Nom" required>
+          </mat-form-field>
+        
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Sexe</mat-label>
+              <mat-select  formControlName="gender" required>
+                <mat-option value="Homme">Homme</mat-option>
+                <mat-option value="Femme" >Femme</mat-option>
+                <mat-option value="Autre">Autre</mat-option>
+              </mat-select>
+            </mat-form-field>
+            <mat-form-field class="horizontal-display" >
+              <input matInput   type="text" formControlName="nationality" placeholder="Nationalité" required>
+            </mat-form-field>
+          </div>
+          
+          <p class="text-center">Adresse</p>
+          <div class="form-group">
+            <mat-form-field class="full-width address-input quarter-display">
+              <input matInput type="text"  formControlName="addressNumber" placeholder="Numéro de rue" required>
+            </mat-form-field>
+            <mat-form-field class="full-width address-input">
+              <input  matInput  type="text" formControlName="street" placeholder="Rue" required>
+            </mat-form-field>
+          </div>
+          
+          <div class="form-group">
+            <mat-form-field class="full-width address-input quarter-display">
+              <input matInput type="text" minlength="5" maxlength="5" formControlName="zipCode" placeholder="Code postal" required>
+              <mat-error *ngIf="formGroup.controls['city'].hasError('pattern')">
+                Vous devez rentrer un code postal correct
+              </mat-error>
+            </mat-form-field>
+        
+            <mat-form-field class="full-width address-input" >
+              <input matInput   type="text" formControlName="city" placeholder="Ville" required>
+            </mat-form-field>
+          </div>
+          <p class="text-center">Informations de contact</p>
+          <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="personalPhone" placeholder="Numéro de téléphone personnel" required>
+          </mat-form-field>
+          <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="parentsPhone" placeholder="Numéro de téléphone des parents" required>
+          </mat-form-field>
+    
+          <mat-form-field class="full-width" >
+            <input matInput   type="text" formControlName="parentsEmail" placeholder="Email des parents" required>
+          </mat-form-field>
+    
+          <p class="text-center">Informations scolaires</p>
+    
+          <mat-form-field class="full-width" >
+            <mat-label>Etablissement </mat-label>
+            <mat-select  formControlName="school" required>
+              <mat-option *ngFor="let school of possibleSchools" [value]="school.id">{{ school.name }}</mat-option>
+            </mat-select>
+          </mat-form-field>
+          <mat-form-field class="full-width" >
+            <input matInput required   type="text" formControlName="specialTeaching" placeholder="Enseignements de spécialité (entrer 'aucun' si jamais vous n'etes pas concerné)" >
+          </mat-form-field>
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Classe</mat-label>
+              <mat-select  formControlName="grade" required>
+                <mat-option value="troisieme">Troisième</mat-option>
+                <mat-option value="seconde">Seconde</mat-option>
+                <mat-option value="premiere" >Première</mat-option>
+                <mat-option value="terminale">Terminale</mat-option>
+              </mat-select>
+            </mat-form-field>
+
+            <mat-form-field class="horizontal-display horizontal-center">
+              <mat-label>Voie</mat-label>
+              <mat-select  formControlName="classType" required>
+                <mat-option value="General">General</mat-option>
+                <mat-option value="Technologique">Technologique</mat-option>
+              </mat-select>
+            </mat-form-field>
+            
+            <mat-form-field class="horizontal-display"> 
+              <mat-label>Boursier </mat-label>
+              <mat-select  formControlName="scholarship" required>
+                <mat-option *ngFor="let scholarship of possibleScholarships" [value]="scholarship.id">{{ scholarship.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+            
+          </div>
+           
+          
+         
+          <p class="text-center">Informations parentales</p>  
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Activité de la mère </mat-label>
+              <mat-select  formControlName="motherActivity" required>
+                <mat-option *ngFor="let activity of possibleParentsActivities" [value]="activity.id">{{ activity.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+      
+            <mat-form-field class="horizontal-display">
+              <mat-label>Activité du père </mat-label>
+              <mat-select  formControlName="fatherActivity" required>
+                <mat-option *ngFor="let activity of possibleParentsActivities" [value]="activity.id">{{ activity.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+          </div>
+          
+          <div class="form-group">
+            <mat-form-field class="horizontal-display">
+              <mat-label>Statut des parents </mat-label>
+              <mat-select formControlName="parentsStatus" required >
+                <mat-option *ngFor="let status of possibleParentsStatus" [value]="status.id">{{ status.name }}</mat-option>
+              </mat-select>
+            </mat-form-field>
+      
+            <mat-form-field class="horizontal-display" >
+              <input matInput   type="number" formControlName="dependantsNumber" placeholder="Nombre de personnes à charge" required>
+            </mat-form-field>
+          </div>
+          <p>
+            <small>
+              Données personnelles : nous utiliserons les données fournies pour assurer le contact avec toi et ta famille,
+              équilibrer les participations aux activités organisées ainsi qu'à des fins d'aggrégation anonymisée
+              (statistiques, demandes de subvention). Plus d'informations dans nos <a routerLink="/mentions-legales"
+                target="_blank">mentions légales</a>.
+            </small>
+          </p>
+      
+          <p>
+            J'accepte qu'OSER utilise mes données personnelles fournies ci-dessus ou dans le formulaire d'inscription
+            administrative, dans le strict respect du cadre spécifié ci-dessus :
+          </p>
+      
+          <mat-checkbox class="checkbox-field" formControlName="acceptedConditions" required >
+            J'accepte cette utilisation
+          </mat-checkbox>
+        
+          <div class="text-center">
+            <button mat-raised-button color="primary" [disabled]="!formGroup.valid || loading">
+              Modifier
+              <app-load-spinner *ngIf="loading" [block]="false"></app-load-spinner>
+            </button>
+          </div>
+          <p class="text-center">{{error}}</p>
+    </form>
+</app-form-page>
+<messages></messages>
+<router-outlet></router-outlet>
diff --git a/src/app/members/account/edit-data/edit-data.component.scss b/src/app/members/account/edit-data/edit-data.component.scss
new file mode 100644
index 0000000..94479bb
--- /dev/null
+++ b/src/app/members/account/edit-data/edit-data.component.scss
@@ -0,0 +1,28 @@
+.checkbox-field {
+    display: block;
+    margin: .5em 0;
+  }
+  .form-group{
+    display:flex;
+    flex-direction: row;
+    justify-content: space-between;
+  }
+  .horizontal-display{
+    width:45%;
+  }
+  .address-input{
+    margin:5px;
+  }
+  
+  .quarter-display{
+    width:25%;
+  }
+
+  .horizontal-center{
+    margin: 0 10px;
+  }
+
+  .checkbox-field {
+    display: block;
+    margin: .5em 0;
+  }
\ No newline at end of file
diff --git a/src/app/members/account/edit-data/edit-data.component.ts b/src/app/members/account/edit-data/edit-data.component.ts
new file mode 100644
index 0000000..465c552
--- /dev/null
+++ b/src/app/members/account/edit-data/edit-data.component.ts
@@ -0,0 +1,133 @@
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
+import { MatSnackBar } from '@angular/material';
+import {ActivatedRoute} from '@angular/router'
+import { PersonalData,PersonalDataService } from '../core';
+import { tap, mergeMap } from 'rxjs/operators';
+import { AuthService } from 'app/core';
+import {User} from 'app/core'
+
+
+
+@Component({
+  selector: 'app-edit-data',
+  templateUrl: './edit-data.component.html',
+  styleUrls: ['./edit-data.component.scss']
+})
+export class EditDataComponent implements OnInit {
+  personalData: PersonalData;
+  formGroup : FormGroup;
+  loading = false;
+  public error : String = "";
+  public possibleParentsStatus = [
+    {id:"Mariés",name:"Mariés"},
+    {id:"Divorcés",name:"Divorcés"},
+    {id:"En concubinage",name:"En concubinage"},
+    {id:"Famille Monoparentale",name:"Famille monoparentale"}
+  ]
+
+  public possibleParentsActivities = [
+    {id:"Agriculteur",name:"Agriculteur"},
+    {id:"Artisan, commerçant, chef d'entreprise",name:"Artisan, commerçant, chef d'entreprise"},
+    {id:"Cadre, profession intellectuelle supérieure",name:"Cadre, profession intellectuelle supérieure"},
+    {id:"Enseignant et assimilé",name:"Enseignant et assimilé"},
+    {id:"Profession intermédiaire",name:"Profession intermédiaire"},
+    {id:"Employé",name:"Employé"},
+    {id:"Ouvrier",name:"Ouvrier"},
+    {id:"Retraité",name:"Retraité"},
+    {id:"Inactif",name:"Inactif"},
+    {id:"Autre",name:"Autre"} 
+  ]
+
+  public possibleSchools = [
+    {id:"Jean Perrin (Longjumeau)", name:"Jean Perrin (Longjumeau)"},
+    {id:"Robert Doisneau (Corbeil-Essonnes)",name:"Robert Doisneau (Corbeil-Essonnes)"},
+    {id:"Henri Matisse (Montreuil)",name:"Henri Matisse (Montreuil)"},
+    {id:"Jean Jaurès (Montreuil)",name:"Jean Jaurès (Montreuil)"},
+    {id:"Charles Péguy (Bobigny)",name:"Charles Péguy (Bobigny)"},
+    {id:"Jean Jaurès (Chatenay-Malabry)",name:"Jean Jaurès (Chatenay-Malabry)"},
+    {id:"Parc des Loges (Evry)",name:"Parc des Loges (Evry)"},
+    {id:"Jean-Baptiste Corot (Savigny-sur-Orge)",name:"Jean-Baptiste Corot (Savigny-sur-Orge)"},
+    {id:"Gaspard Monge (Savigny-sur-Orge)",name:"Gaspard Monge (Savigny-sur-Orge)"},
+  ]
+
+  public possibleScholarships = [
+    {id:"echelon1",name:"Oui, échelon 1"},
+    {id:"echelon2",name:"Oui, échelon 2"},
+    {id:"echelon3",name:"Oui, échelon 3"},
+    {id:"echelon4",name:"Oui, échelon 4"},
+    {id:"echelon5",name:"Oui, échelon 5"},
+    {id:"echelon6",name:"Oui, échelon 6"},
+    {id:"echelon7",name:"Oui, échelon 7"},
+    {id:"no",name:"Non"},
+  ]
+
+
+
+  constructor(
+    private route: ActivatedRoute,
+    private personalDataService : PersonalDataService,
+    private formBuilder: FormBuilder,
+    private router: Router,
+    private auth: AuthService,
+    private snackBar: MatSnackBar,
+    
+  ) { }
+
+
+  ngOnInit() {
+    this.personalData = this.route.snapshot.data['personalData'];
+    this.createForm()
+  }
+
+  
+  createForm() {
+    
+    this.formGroup = this.formBuilder.group({
+      firstName:this.personalData.firstName,
+      lastName:this.personalData.lastName,
+      gender:this.personalData.gender,
+      nationality : this.personalData.nationality,
+      addressNumber:[this.personalData.addressNumber,Validators.pattern("^[0-9]*$")],
+      street:this.personalData.street,
+      zipCode:this.personalData.zipCode,
+      city:this.personalData.city,
+      personalPhone:[this.personalData.personalPhone,Validators.pattern("^[0-9, ]*[0-9, ]{10}$")],
+      parentsPhone:this.personalData.parentsPhone,
+      parentsEmail:[this.personalData.parentsEmail,Validators.email],
+      school:this.personalData.school,
+      grade:this.personalData.grade,
+      classType : this.personalData.classType,
+      specialTeaching:this.personalData.specialTeaching,
+      scholarship:this.personalData.scholarship,
+      fatherActivity:this.personalData.fatherActivity,
+      motherActivity:this.personalData.motherActivity,
+      parentsStatus:this.personalData.parentsStatus,
+      dependantsNumber:this.personalData.dependantsNumber,
+      acceptedConditions: false
+    })
+ 
+  }
+
+  submit(){
+    this.loading = true;
+    const {firstName,lastName,gender,nationality,classType,addressNumber,street,zipCode,city,personalPhone,parentsPhone,parentsEmail,school,grade,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber} = this.formGroup.value;
+    const personalData: PersonalData = {...this.personalData,classType,firstName,lastName,gender,nationality,addressNumber,street,zipCode,city,personalPhone,parentsPhone,parentsEmail,school,grade,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber};
+    
+    this.personalDataService.edit(personalData).pipe(
+      tap(() => this.loading = false),
+      tap(()=> this.error = ""),
+      tap(() => this.router.navigate(['./membres/compte/donnees'])),
+    ).subscribe(
+      () => {},
+      (error) => {
+        this.error = "Erreur lors de la modification des données"
+        this.loading = false
+      },
+    );
+  
+  }
+  
+
+}
diff --git a/src/app/members/account/my-data/my-data.component.html b/src/app/members/account/my-data/my-data.component.html
new file mode 100644
index 0000000..20284c5
--- /dev/null
+++ b/src/app/members/account/my-data/my-data.component.html
@@ -0,0 +1,33 @@
+<app-form-page>
+    <h2>Mes données</h2>
+    <p><span class='label'>Prénom : </span>{{personalData.firstName}} </p> 
+    <p><span class='label'>Nom : </span>{{personalData.lastName}}</p>
+    <p><span class='label'>Sexe : </span>{{personalData.gender}}</p>
+    <p><span class='label'>Nationalité : </span>{{personalData.nationality}}</p>
+    <mat-divider></mat-divider>
+    <p> <span class='label'>Adresse : </span>{{personalData.addressNumber}} {{personalData.street}} {{personalData.zipCode}}, {{personalData.city}}</p>
+    <mat-divider></mat-divider>
+    <p><span class='label'>Numéro de téléphone personnel : </span>{{personalData.personalPhone}}</p>
+    <p><span class='label'>Numéro de téléphone des parents : </span>{{personalData.parentsPhone}}</p>
+    <p><span class='label'>Email des parents  : </span>{{personalData.parentsEmail}}</p>
+    <mat-divider></mat-divider>
+    <p><span class='label'>Etablissement : </span>{{personalData.school}}</p> 
+    <p><span class='label'>Classe : </span>{{grade[personalData.grade]}}</p>
+    <p><span class='label'>Voie : </span>{{[personalData.classType]}}</p>
+    <p><span class='label'>Enseignement de spécialité : </span>{{personalData.specialTeaching}}</p>
+    <p><span class='label'>Boursier : </span>{{scholarship[personalData.scholarship]}}</p>
+    <mat-divider></mat-divider>
+    <p><span class='label'>Activité du père : </span>{{personalData.fatherActivity}}</p>
+    
+    <p><span class='label'>Activité de la mère : </span>{{personalData.motherActivity}}</p>
+    <p><span class='label'>Statut des parents : </span>{{personalData.parentsStatus}}</p>
+    <p><span class='label'>Nombre de personnes à charge : </span>{{personalData.dependantsNumber}}</p>
+    <div class="text-center">
+        <button mat-raised-button color="primary" (click)="editData()" [disabled]="loading"><mat-icon aria-hidden="false" aria-label="Example home icon">edit</mat-icon>Modifier mes données</button>
+    </div>
+    
+</app-form-page>
+<messages></messages>
+<router-outlet></router-outlet>
+
+  
\ No newline at end of file
diff --git a/src/app/members/account/my-data/my-data.component.scss b/src/app/members/account/my-data/my-data.component.scss
new file mode 100644
index 0000000..80c0108
--- /dev/null
+++ b/src/app/members/account/my-data/my-data.component.scss
@@ -0,0 +1,4 @@
+.label{
+    color:grey;
+    font-weight: 600;
+}
\ No newline at end of file
diff --git a/src/app/members/account/my-data/my-data.component.ts b/src/app/members/account/my-data/my-data.component.ts
new file mode 100644
index 0000000..54b7f17
--- /dev/null
+++ b/src/app/members/account/my-data/my-data.component.ts
@@ -0,0 +1,52 @@
+import { Component, OnInit } from '@angular/core';
+import {ActivatedRoute,Router} from '@angular/router'
+import {PersonalData} from '../core'
+import {User} from 'app/core'
+
+@Component({
+  selector: 'app-my-data',
+  templateUrl: './my-data.component.html',
+  styleUrls: ['./my-data.component.scss']
+})
+export class MyDataComponent implements OnInit {
+  
+  personalData: PersonalData;
+  
+  
+  public grade = {
+    "troisieme": "Troisième",
+    "seconde":"Seconde",
+    "premiere":"Première",
+    "terminale":"Terminale"
+
+  }
+  public scholarship = {
+    "echelon0": "Oui, échelon 0",
+    "echelon1": "Oui, échelon 1",
+    "echelon2": "Oui, échelon 2",
+    "echelon3": "Oui, échelon 3",
+    "echelon4": "Oui, échelon 4",
+    "echelon5": "Oui, échelon 5",
+    "echelon6": "Oui, échelon 6",
+    "echelon7": "Oui, échelon 7",
+    "no" : "Non"
+
+  }
+
+  
+  
+  public editData = (e)=> {
+    this.router.navigate(['./membres/compte/modifier_donnees'])
+  }
+  
+ 
+
+  constructor(private route: ActivatedRoute, private router:Router) { }
+  
+  ngOnInit() {
+    
+    this.personalData = this.route.snapshot.data['personalData'];
+    
+  }
+
+}
diff --git a/src/app/members/account/my-file/my-file.component.html b/src/app/members/account/my-file/my-file.component.html
new file mode 100644
index 0000000..df34468
--- /dev/null
+++ b/src/app/members/account/my-file/my-file.component.html
@@ -0,0 +1,8 @@
+<app-form-page>
+    <h1>Mon dossier</h1>
+    <app-upload-file></app-upload-file>
+</app-form-page>
+<messages></messages>
+<router-outlet></router-outlet>
+
+  
\ No newline at end of file
diff --git a/src/app/members/account/my-file/my-file.component.scss b/src/app/members/account/my-file/my-file.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/members/account/my-file/my-file.component.ts b/src/app/members/account/my-file/my-file.component.ts
new file mode 100644
index 0000000..723e2d5
--- /dev/null
+++ b/src/app/members/account/my-file/my-file.component.ts
@@ -0,0 +1,17 @@
+import { Component, OnInit } from '@angular/core';
+import {ActivatedRoute} from '@angular/router'
+import {UploadComponent} from '../upload/upload.component'
+import {PersonalData} from '../core'
+@Component({
+  selector: 'app-my-file',
+  templateUrl: './my-file.component.html',
+  styleUrls: ['./my-file.component.scss']
+})
+export class MyFileComponent implements OnInit {
+    
+  
+
+  constructor(private route: ActivatedRoute) { }
+
+  ngOnInit() {}
+}
diff --git a/src/app/members/account/my-file/my-file.module.ts b/src/app/members/account/my-file/my-file.module.ts
new file mode 100644
index 0000000..9c7cd71
--- /dev/null
+++ b/src/app/members/account/my-file/my-file.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core'
+import { CommonModule } from '@angular/common'
+import { UploadModule } from '../upload/upload.module'
+import {UploadComponent} from '../upload/upload.component'
+import {MyFileComponent} from './my-file.component'
+
+@NgModule({
+    imports : [UploadModule],
+    declarations: [MyFileComponent,UploadModule],
+    entryComponents:[UploadComponent]
+  
+})
+export class MyFileModule {}
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/dialog.component.html b/src/app/members/account/upload/dialog/dialog.component.html
new file mode 100644
index 0000000..f3d15c7
--- /dev/null
+++ b/src/app/members/account/upload/dialog/dialog.component.html
@@ -0,0 +1,48 @@
+<input
+  type="file"
+  #file
+  style="display: none"
+  (change)="onFilesAdded()"
+  single
+/>
+<div class="container" fxLayout="column" fxLayoutAlign="space-evenly stretch">
+  <h1 mat-dialog-title>Déposer un fichier</h1>
+  <div>
+    <button
+      [disabled]="uploading || uploadSuccessful"
+      mat-raised-button
+      color="primary"
+      class="add-files-btn"
+      (click)="addFiles()"
+    >
+      Ajouter un fichier
+    </button>
+  </div>
+
+  <!-- This is the content of the dialog, containing a list of the files to upload -->
+  <mat-dialog-content fxFlex>
+    <mat-list>
+      <mat-list-item *ngFor="let file of files">
+        <h4 mat-line>{{file.name}}</h4>
+        <mat-progress-bar
+          *ngIf="progress"
+          mode="determinate"
+          [value]="progress[file.name].progress | async"
+        ></mat-progress-bar>
+      </mat-list-item>
+    </mat-list>
+  </mat-dialog-content>
+
+  <!-- This are the actions of the dialog, containing the primary and the cancel button-->
+  <mat-dialog-actions class="actions">
+    <button *ngIf="showCancelButton" mat-button mat-dialog-close>Annuler</button>
+    <button
+      mat-raised-button
+      color="primary"
+      [disabled]="!canBeClosed"
+      (click)="closeDialog()"
+    >
+      {{primaryButtonText}}
+    </button>
+  </mat-dialog-actions>
+</div>
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/dialog.component.scss b/src/app/members/account/upload/dialog/dialog.component.scss
new file mode 100644
index 0000000..88e5de7
--- /dev/null
+++ b/src/app/members/account/upload/dialog/dialog.component.scss
@@ -0,0 +1,17 @@
+
+  
+  :host {
+    height: 100%;
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+  }
+  
+  .actions {
+    justify-content: flex-end;
+    float:bottom;
+  }
+  
+  .container {
+    height: 100%;
+  }
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/imageRightsDialog.component.ts b/src/app/members/account/upload/dialog/imageRightsDialog.component.ts
new file mode 100644
index 0000000..610713b
--- /dev/null
+++ b/src/app/members/account/upload/dialog/imageRightsDialog.component.ts
@@ -0,0 +1,82 @@
+import { Component, OnInit, ViewChild } from '@angular/core'
+import { MatDialogRef } from '@angular/material'
+import { UploadService } from '../upload.service'
+import { forkJoin } from 'rxjs'
+
+@Component({
+  selector: 'app-dialog',
+  templateUrl: './dialog.component.html',
+  styleUrls: ['./dialog.component.scss'],
+})
+
+export class ImageRightsDialogComponent{
+    constructor(public dialogRef : MatDialogRef<ImageRightsDialogComponent>, public uploadService : UploadService) { }
+    @ViewChild('file') file
+    public files: Set<File> = new Set()
+    progress
+    canBeClosed = true
+    primaryButtonText = 'Envoyer'
+    showCancelButton = true
+    uploading = false
+    uploadSuccessful = false
+  
+    addFiles() {
+      this.file.nativeElement.click();
+    }
+  
+    onFilesAdded() {
+      console.log(this.file.nativeElement.files)
+      const files: { [key: string]: File } = this.file.nativeElement.files;
+      for (let key in files) {
+        if (!isNaN(parseInt(key))) {
+          this.files.clear()
+          this.files.add(files[key]);
+        }
+      }
+    }
+  
+  
+    closeDialog() {
+      // if everything was uploaded already, just close the dialog
+      if (this.uploadSuccessful) {
+        return this.dialogRef.close();
+      }
+    
+      // set the component state to "uploading"
+      this.uploading = true;
+    
+      // start the upload and save the progress map
+      this.progress = this.uploadService.upload(this.files,"image");
+    
+      // convert the progress map into an array
+      let allProgressObservables = [];
+      for (let key in this.progress) {
+        allProgressObservables.push(this.progress[key].progress);
+      }
+    
+      // Adjust the state variables
+    
+      // The OK-button should have the text "Finish" now
+      this.primaryButtonText = 'Terminer';
+    
+      // The dialog should not be closed while uploading
+      this.canBeClosed = false;
+      this.dialogRef.disableClose = true;
+    
+      // Hide the cancel-button
+      this.showCancelButton = false;
+    
+      // When all progress-observables are completed...
+      forkJoin(allProgressObservables).subscribe(end => {
+        // ... the dialog can be closed again...
+        this.canBeClosed = true;
+        this.dialogRef.disableClose = false;
+    
+        // ... the upload was successful...
+        this.uploadSuccessful = true;
+    
+        // ... and the component is no longer uploading
+        this.uploading = false;
+      });
+    }
+  }
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/parentalAuthDialog.component.ts b/src/app/members/account/upload/dialog/parentalAuthDialog.component.ts
new file mode 100644
index 0000000..c2a038b
--- /dev/null
+++ b/src/app/members/account/upload/dialog/parentalAuthDialog.component.ts
@@ -0,0 +1,84 @@
+import { Component, OnInit, ViewChild } from '@angular/core'
+import { MatDialogRef } from '@angular/material'
+import { UploadService } from '../upload.service'
+import { forkJoin } from 'rxjs'
+
+@Component({
+  selector: 'app-dialog',
+  templateUrl: './dialog.component.html',
+  styleUrls: ['./dialog.component.scss'],
+})
+
+export class ParentalAuthDialogComponent {
+    constructor(public dialogRef : MatDialogRef<ParentalAuthDialogComponent>, public uploadService : UploadService) { }
+    @ViewChild('file') file
+    public files: Set<File> = new Set()
+    progress
+    canBeClosed = true
+    primaryButtonText = 'Envoyer'
+    showCancelButton = true
+    uploading = false
+    uploadSuccessful = false
+  
+    addFiles() {
+      this.file.nativeElement.click();
+    }
+  
+    onFilesAdded() {
+      console.log(this.file.nativeElement.files)
+      const files: { [key: string]: File } = this.file.nativeElement.files;
+      for (let key in files) {
+        if (!isNaN(parseInt(key))) {
+          this.files.clear()
+          this.files.add(files[key]);
+        }
+      }
+    }
+  
+  
+    closeDialog() {
+      // if everything was uploaded already, just close the dialog
+      if (this.uploadSuccessful) {
+        return this.dialogRef.close();
+      }
+    
+      // set the component state to "uploading"
+      this.uploading = true;
+    
+      // start the upload and save the progress map
+      this.progress = this.uploadService.upload(this.files,"parental");
+    
+      // convert the progress map into an array
+      let allProgressObservables = [];
+      for (let key in this.progress) {
+        allProgressObservables.push(this.progress[key].progress);
+      }
+    
+      // Adjust the state variables
+    
+      // The OK-button should have the text "Finish" now
+      this.primaryButtonText = 'Terminer';
+    
+      // The dialog should not be closed while uploading
+      this.canBeClosed = false;
+      this.dialogRef.disableClose = true;
+    
+      // Hide the cancel-button
+      this.showCancelButton = false;
+    
+      // When all progress-observables are completed...
+      forkJoin(allProgressObservables).subscribe(end => {
+        // ... the dialog can be closed again...
+        this.canBeClosed = true;
+        this.dialogRef.disableClose = false;
+    
+        // ... the upload was successful...
+        this.uploadSuccessful = true;
+    
+        // ... and the component is no longer uploading
+        this.uploading = false;
+      });
+    }
+  }
+  
+  
\ No newline at end of file
diff --git a/src/app/members/account/upload/dialog/studentChartDialog.component.ts b/src/app/members/account/upload/dialog/studentChartDialog.component.ts
new file mode 100644
index 0000000..f2b3ff6
--- /dev/null
+++ b/src/app/members/account/upload/dialog/studentChartDialog.component.ts
@@ -0,0 +1,87 @@
+import { Component, OnInit, ViewChild } from '@angular/core'
+import { MatDialogRef } from '@angular/material'
+import { UploadService } from '../upload.service'
+import { forkJoin } from 'rxjs'
+
+@Component({
+  selector: 'app-dialog',
+  templateUrl: './dialog.component.html',
+  styleUrls: ['./dialog.component.scss'],
+})
+
+
+
+
+
+export class StudentChartDialogComponent {
+  constructor(public dialogRef : MatDialogRef<StudentChartDialogComponent>, public uploadService : UploadService) { }
+  @ViewChild('file') file
+  public files: Set<File> = new Set()
+  progress
+  canBeClosed = true
+  primaryButtonText = 'Envoyer'
+  showCancelButton = true
+  uploading = false
+  uploadSuccessful = false
+
+  addFiles() {
+    this.file.nativeElement.click();
+  }
+
+  onFilesAdded() {
+    console.log(this.file.nativeElement.files)
+    const files: { [key: string]: File } = this.file.nativeElement.files;
+    for (let key in files) {
+      if (!isNaN(parseInt(key))) {
+        this.files.clear()
+        this.files.add(files[key]);
+      }
+    }
+  }
+
+
+  closeDialog() {
+    // if everything was uploaded already, just close the dialog
+    if (this.uploadSuccessful) {
+      return this.dialogRef.close();
+    }
+  
+    // set the component state to "uploading"
+    this.uploading = true;
+  
+    // start the upload and save the progress map
+    this.progress = this.uploadService.upload(this.files,"chart");
+  
+    // convert the progress map into an array
+    let allProgressObservables = [];
+    for (let key in this.progress) {
+      allProgressObservables.push(this.progress[key].progress);
+    }
+  
+    // Adjust the state variables
+  
+    // The OK-button should have the text "Finish" now
+    this.primaryButtonText = 'Terminer';
+  
+    // The dialog should not be closed while uploading
+    this.canBeClosed = false;
+    this.dialogRef.disableClose = true;
+  
+    // Hide the cancel-button
+    this.showCancelButton = false;
+  
+    // When all progress-observables are completed...
+    forkJoin(allProgressObservables).subscribe(end => {
+      // ... the dialog can be closed again...
+      this.canBeClosed = true;
+      this.dialogRef.disableClose = false;
+  
+      // ... the upload was successful...
+      this.uploadSuccessful = true;
+  
+      // ... and the component is no longer uploading
+      this.uploading = false;
+    });
+  }
+}
+
diff --git a/src/app/members/account/upload/upload.component.html b/src/app/members/account/upload/upload.component.html
new file mode 100644
index 0000000..6912015
--- /dev/null
+++ b/src/app/members/account/upload/upload.component.html
@@ -0,0 +1,4 @@
+<h3>Charte de l'éleve</h3><button mat-raised-button (click)="openStudentChartDialog()">Déposer le fichier</button>
+<h3>Autorisation parentale</h3><button mat-raised-button (click)="openParentalAuthDialog()">Déposer le fichier</button>
+<h3>Droit à l'image</h3><button mat-raised-button (click)="openImageRightsDialog()">Déposer le fichier</button>
+<h3>Statut du dossier : </h3>
\ No newline at end of file
diff --git a/src/app/members/account/upload/upload.component.scss b/src/app/members/account/upload/upload.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/members/account/upload/upload.component.ts b/src/app/members/account/upload/upload.component.ts
new file mode 100644
index 0000000..374e0ef
--- /dev/null
+++ b/src/app/members/account/upload/upload.component.ts
@@ -0,0 +1,34 @@
+import { Component } from '@angular/core'
+import { MatDialog } from '@angular/material'
+import {StudentChartDialogComponent } from './dialog/studentChartDialog.component'
+import {ParentalAuthDialogComponent} from './dialog/parentalAuthDialog.component'
+import {ImageRightsDialogComponent} from './dialog/imageRightsDialog.component'
+import { UploadService } from './upload.service'
+
+@Component({
+  selector: 'app-upload-file',
+  templateUrl: './upload.component.html',
+  styleUrls: ['./upload.component.scss'],
+})
+export class UploadComponent {
+  constructor(public dialog: MatDialog, public uploadService: UploadService) {}
+
+  public openStudentChartDialog() {
+    let dialogRef = this.dialog.open(StudentChartDialogComponent, {
+      width: '50%',
+      height: '50%',
+    })
+  }
+  public openParentalAuthDialog() {
+    let dialogRef = this.dialog.open(ParentalAuthDialogComponent, {
+      width: '50%',
+      height: '50%',
+    })
+  }
+  public openImageRightsDialog() {
+    let dialogRef = this.dialog.open(ImageRightsDialogComponent, {
+      width: '50%',
+      height: '50%',
+    })
+  }
+}
\ No newline at end of file
diff --git a/src/app/members/account/upload/upload.module.ts b/src/app/members/account/upload/upload.module.ts
new file mode 100644
index 0000000..a40c62a
--- /dev/null
+++ b/src/app/members/account/upload/upload.module.ts
@@ -0,0 +1,36 @@
+import { NgModule } from '@angular/core'
+import { CommonModule } from '@angular/common'
+//Components
+import { UploadComponent } from './upload.component'
+import {StudentChartDialogComponent} from './dialog/studentChartDialog.component'
+import {ImageRightsDialogComponent} from './dialog/imageRightsDialog.component'
+import {ParentalAuthDialogComponent} from './dialog/parentalAuthDialog.component'
+import {
+  MatButtonModule,
+  MatDialogModule,
+  MatListModule,
+  MatProgressBarModule,
+} from '@angular/material'
+
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
+import { FlexLayoutModule } from '@angular/flex-layout'
+import { UploadService } from './upload.service'
+import { HttpClientModule } from '@angular/common/http'
+
+@NgModule({
+  imports: [
+    CommonModule,
+    MatButtonModule,
+    MatDialogModule,
+    MatListModule,
+    FlexLayoutModule,
+    HttpClientModule,
+    BrowserAnimationsModule,
+    MatProgressBarModule,
+  ],
+  declarations: [UploadComponent, ParentalAuthDialogComponent,ImageRightsDialogComponent,StudentChartDialogComponent],
+  exports: [UploadComponent], 
+  providers: [UploadService],
+  entryComponents : [ParentalAuthDialogComponent,ImageRightsDialogComponent,StudentChartDialogComponent]
+})
+export class UploadModule {}
\ No newline at end of file
diff --git a/src/app/members/account/upload/upload.service.spec.ts b/src/app/members/account/upload/upload.service.spec.ts
new file mode 100644
index 0000000..c5718b0
--- /dev/null
+++ b/src/app/members/account/upload/upload.service.spec.ts
@@ -0,0 +1,15 @@
+import { TestBed, inject } from '@angular/core/testing';
+
+import { UploadService } from './upload.service';
+
+describe('UploadService', () => {
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      providers: [UploadService]
+    });
+  });
+
+  it('should be created', inject([UploadService], (service: UploadService) => {
+    expect(service).toBeTruthy();
+  }));
+});
diff --git a/src/app/members/account/upload/upload.service.ts b/src/app/members/account/upload/upload.service.ts
new file mode 100644
index 0000000..3e67cea
--- /dev/null
+++ b/src/app/members/account/upload/upload.service.ts
@@ -0,0 +1,66 @@
+import { Injectable } from '@angular/core'
+import {
+  HttpClient,
+  HttpRequest,
+  HttpEventType,
+  HttpResponse,
+} from '@angular/common/http'
+import { Observable,Subject } from 'rxjs'
+import { ApiService } from 'app/core';
+
+ 
+
+@Injectable({
+  providedIn: 'root'
+})
+export class UploadService extends ApiService {
+  constructor(private http: HttpClient) {super();}
+  private url = this.apiUrl + 'upload/' 
+  public upload(
+    files: Set<File>,
+    uploadedFileType : String
+  ): { [key: string]: { progress: Observable<number> } } {
+    // this will be the our resulting map
+    const status: { [key: string]: { progress: Observable<number> } } = {};
+
+    files.forEach(file => {
+      // create a new multipart-form for every file
+      const formData: FormData = new FormData();
+      formData.append('fichier', file, file.name);
+
+      // create a http-post request and pass the form
+      // tell it to report the upload progress
+      const req = new HttpRequest('POST', this.url+uploadedFileType, formData, {
+        reportProgress: true
+      });
+
+      // create a new progress-subject for every file
+      const progress = new Subject<number>();
+
+      // send the http-request and subscribe for progress-updates
+      this.http.request(req).subscribe(event => {
+        if (event.type === HttpEventType.UploadProgress) {
+
+          // calculate the progress percentage
+          const percentDone = Math.round(100 * event.loaded / event.total);
+
+          // pass the percentage into the progress-stream
+          progress.next(percentDone);
+        } else if (event instanceof HttpResponse) {
+
+          // Close the progress-stream if we get an answer form the API
+          // The upload is complete
+          progress.complete();
+        }
+      });
+
+      // Save every progress-observable in a map of all observables
+      status[file.name] = {
+        progress: progress.asObservable()
+      };
+    });
+
+    // return the map of progress.observables
+    return status;
+  }
+}
\ No newline at end of file
diff --git a/src/app/members/members-routing.module.ts b/src/app/members/members-routing.module.ts
index f5f0fac..01addc9 100644
--- a/src/app/members/members-routing.module.ts
+++ b/src/app/members/members-routing.module.ts
@@ -26,6 +26,11 @@ const routes: Routes = [
         data: { title: 'Projets' },
         loadChildren: './projects/projects.module#ProjectsModule',
       },
+      {
+        path: 'compte',
+        data: { title: 'Mon Compte' },
+        loadChildren : './account/account.module#AccountModule', 
+      }
     ]
   },
 ];
diff --git a/src/app/members/members.component.ts b/src/app/members/members.component.ts
index 18629a4..f209352 100644
--- a/src/app/members/members.component.ts
+++ b/src/app/members/members.component.ts
@@ -19,6 +19,7 @@ export class MembersComponent {
     { href: './', text: 'Mon espace' },
     { href: './projets', text: 'Nos projets' },
     { href: './sorties', text: 'Nos sorties' },
+    { href: './compte', text: 'Mon compte' },
     { text: 'Déconnexion', action: () => this.logout() },
   ];
 
diff --git a/src/app/members/student-home/account-overview/account-overview.component.html b/src/app/members/student-home/account-overview/account-overview.component.html
new file mode 100644
index 0000000..d940ef5
--- /dev/null
+++ b/src/app/members/student-home/account-overview/account-overview.component.html
@@ -0,0 +1,12 @@
+<div class="container">
+    <h2 id="title">Mon Compte</h2>
+  
+    <p>
+      Retrouve et modifie tes données personnelles que tu as saisies lors de ton inscription.
+    </p>
+    <a mat-raised-button color="accent" routerLink="compte/donnees">
+      Voir mon compte
+    </a>
+  
+  </div>
+  
\ No newline at end of file
diff --git a/src/app/members/student-home/account-overview/account-overview.component.scss b/src/app/members/student-home/account-overview/account-overview.component.scss
new file mode 100644
index 0000000..7c2d320
--- /dev/null
+++ b/src/app/members/student-home/account-overview/account-overview.component.scss
@@ -0,0 +1,15 @@
+@import '~sass/variables';
+
+#title {
+  margin: 0;
+  padding: 0;
+}
+
+.row {
+  padding-bottom: 0.5em;
+
+  p {
+    margin: 0;
+    padding: 0;
+  }
+}
diff --git a/src/app/members/student-home/account-overview/account-overview.component.ts b/src/app/members/student-home/account-overview/account-overview.component.ts
new file mode 100644
index 0000000..f3194fe
--- /dev/null
+++ b/src/app/members/student-home/account-overview/account-overview.component.ts
@@ -0,0 +1,9 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'account-overview',
+  templateUrl: './account-overview.component.html',
+  styleUrls: ['./account-overview.component.scss']
+})
+
+export class AccountOverviewComponent {}
diff --git a/src/app/members/student-home/student-home.component.html b/src/app/members/student-home/student-home.component.html
index 9693f0e..a2c967e 100644
--- a/src/app/members/student-home/student-home.component.html
+++ b/src/app/members/student-home/student-home.component.html
@@ -9,6 +9,9 @@
   <app-pane id="projects">
     <projects-overview class="pane-content"></projects-overview>
   </app-pane>
+  <app-pane id="account">
+    <account-overview class="pane-content"></account-overview>
+  </app-pane>
 </app-two-panes>
 
 <div class="container">
diff --git a/src/app/members/student-home/student-home.component.scss b/src/app/members/student-home/student-home.component.scss
index eb3c7e0..62a4056 100644
--- a/src/app/members/student-home/student-home.component.scss
+++ b/src/app/members/student-home/student-home.component.scss
@@ -14,3 +14,5 @@
   // TODO use a background image?
   background: $color-purple-lighter;
 }
+
+
diff --git a/src/app/members/student-home/student-home.module.ts b/src/app/members/student-home/student-home.module.ts
index bc853c8..778d82d 100644
--- a/src/app/members/student-home/student-home.module.ts
+++ b/src/app/members/student-home/student-home.module.ts
@@ -12,6 +12,7 @@ import {
 import { StudentHomeComponent } from './student-home.component';
 import { ProjectsOverviewComponent } from './projects-overview/projects-overview.component';
 import { VisitsOverviewComponent } from './visits-overview/visits-overview.component';
+import {AccountOverviewComponent} from './account-overview/account-overview.component';
 
 @NgModule({
   imports:[
@@ -26,6 +27,7 @@ import { VisitsOverviewComponent } from './visits-overview/visits-overview.compo
     StudentHomeComponent,
     ProjectsOverviewComponent,
     VisitsOverviewComponent,
+    AccountOverviewComponent,
   ]
 })
 
diff --git a/src/app/panes/two-panes/two-panes.component.scss b/src/app/panes/two-panes/two-panes.component.scss
index d0f6903..60c5bdc 100644
--- a/src/app/panes/two-panes/two-panes.component.scss
+++ b/src/app/panes/two-panes/two-panes.component.scss
@@ -4,6 +4,6 @@
   display: grid;
   grid-template-columns: 1fr;
   @include media-xs {
-    grid-template-columns: 1fr 1fr;
+    grid-template-columns: 1fr 1fr 1fr;
   }
 }
diff --git a/src/app/signup/core/index.ts b/src/app/signup/core/index.ts
index b18613f..29d5d82 100644
--- a/src/app/signup/core/index.ts
+++ b/src/app/signup/core/index.ts
@@ -1,3 +1,5 @@
 export * from './registration.model';
 export * from './registration.service';
+export * from './personnalData.model';
+export * from './personnalData.service';
 export * from './password.matcher';
diff --git a/src/app/signup/core/personnalData.model.ts b/src/app/signup/core/personnalData.model.ts
new file mode 100644
index 0000000..50e4f3c
--- /dev/null
+++ b/src/app/signup/core/personnalData.model.ts
@@ -0,0 +1,60 @@
+import { Injectable } from '@angular/core';
+import { Address, AddressAdapter } from 'app/core';
+
+class PersonnalDataSchema {
+    gender: string;
+    adressNumber:string;
+    street:string;
+    zipCode:string;
+    city:string;
+    personnalPhone:string;
+    parentsPhone:string;
+    parentsEmail:string;
+    school:string;
+    grade:string;
+    section:string;
+    specialTeaching:string;
+    scholarship:string;
+    fatherActivity:string;
+    motherActivity:string;
+    parentsStatus:string;
+    dependantsNumber:number;
+}
+
+export class PersonnalData extends PersonnalDataSchema {
+
+  constructor(args: PersonnalDataSchema) {
+    super();
+    Object.assign(this, args);
+  }
+}
+
+@Injectable({
+  providedIn: 'root'
+})
+export class PersonnalDataAdapter {
+
+  constructor(private addressAdapter: PersonnalDataAdapter) { }
+
+  encode(obj: PersonnalData): any {
+    return {
+        gender: obj.gender,
+        adressNumber: obj.adressNumber,
+        street:obj.street,
+        zipCode:obj.zipCode,
+        city:obj.city,
+        personnalPhone:obj.personnalPhone,
+        parentsPhone:obj.parentsPhone,
+        parentsEmail:obj.parentsEmail,
+        school:obj.school,
+        grade:obj.grade,
+        section:obj.section,
+        specialTeaching:obj.specialTeaching,
+        scholarship:obj.scholarship,
+        fatherActivity:obj.fatherActivity,
+        motherActivity:obj.motherActivity,
+        parentsStatus:obj.parentsStatus,
+        dependantsNumber:obj.dependantsNumber
+    }
+  }
+}
diff --git a/src/app/signup/core/personnalData.service.ts b/src/app/signup/core/personnalData.service.ts
new file mode 100644
index 0000000..1b8a2ab
--- /dev/null
+++ b/src/app/signup/core/personnalData.service.ts
@@ -0,0 +1,22 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { Observable, of } from 'rxjs';
+import { environment } from 'environments/environment';
+import { PersonnalData,PersonnalDataAdapter } from './personnalData.model';
+
+@Injectable({
+  providedIn: 'root',
+})
+export class PersonnalDataService {
+
+  private baseUrl = environment.apiUrl + 'personnalData/';
+
+  constructor(private http: HttpClient, private adapter: PersonnalDataAdapter) { }
+
+  create(personnalData: PersonnalData): Observable<any> {
+    const body: any = this.adapter.encode(personnalData);
+    
+    return this.http.post(this.baseUrl, body);
+  }
+
+}
diff --git a/src/app/signup/signup.module.ts b/src/app/signup/signup.module.ts
index d33e9b5..245b3c2 100644
--- a/src/app/signup/signup.module.ts
+++ b/src/app/signup/signup.module.ts
@@ -7,10 +7,12 @@ import { RouterModule } from '@angular/router';
 import {
   MatFormFieldModule,
   MatInputModule,
+  MatSelectModule,
   MatButtonModule,
   MatSnackBarModule,
   MatCheckboxModule,
   MatIconModule,
+  MatSlideToggleModule,
 } from '@angular/material';
 
 import { SharedModule } from 'app/shared';
@@ -30,11 +32,13 @@ import { StudentSignupComponent } from './student-signup/student-signup.componen
     SharedModule,
     // Material
     MatFormFieldModule,
+    MatSelectModule,
     MatInputModule,
     MatButtonModule,
     MatSnackBarModule,
     MatCheckboxModule,
     MatIconModule,
+    MatSlideToggleModule,
   ],
 })
 export class SignupModule { }
diff --git a/src/app/signup/student-signup/student-signup.component.html b/src/app/signup/student-signup/student-signup.component.html
index a2fec31..65dd5d1 100644
--- a/src/app/signup/student-signup/student-signup.component.html
+++ b/src/app/signup/student-signup/student-signup.component.html
@@ -32,57 +32,13 @@
         Il nous permettra de te contacter en cas de nécessité.
       </mat-hint>
     </mat-form-field>
-    <!--
-    <p>
-      Pour assurer ton inscription au tutorat, il est
-      <strong>obligatoire</strong>
-      de remplir le formulaire d'inscription administrative (Google Form).
-    </p>
 
-    <p>
-      <small>
-        Données personnelles : nous utiliserons les données fournies pour assurer le contact avec toi et ta famille,
-        équilibrer les participations aux activités organisées ainsi qu'à des fins d'aggrégation anonymisée
-        (statistiques, demandes de subvention). Plus d'informations dans nos <a routerLink="/mentions-legales"
-          target="_blank">mentions légales</a>.
-      </small>
-    </p>
-
-    <p>
-      J'accepte qu'OSER utilise mes données personnelles fournies ci-dessus ou dans le formulaire d'inscription
-      adminsitrative, dans le strict respect du cadre spécifié ci-dessus :
-    </p>
 
-    <mat-checkbox id="checkboxUtilisation" class="checkbox-field" formControlName="acceptedConditions" required onclick='if (document.getElementById("checkboxUtilisation").classList.contains("mat-checkbox-checked")) {
-        document.getElementById("boutonChiant").setAttribute("disabled", "true");
-      }
-      else {
-        document.getElementById("boutonChiant").removeAttribute("disabled");
-      }'>
-      J'accepte cette utilisation
-    </mat-checkbox>
 
-    <p class="text-center">
-      <a mat-raised-button color="accent" disabled id="boutonChiant"
-        href="https://docs.google.com/forms/d/e/1FAIpQLScJnkGaDdXWL-sPyHuq58gJivr5xkZ_M5AASRCBHx4a9wR4-Q/viewform?usp=sf_link"
-        rel="noreferrer" target="_blank">
-        <mat-icon>launch</mat-icon>
-        Remplir le formulaire
-      </a>
-    </p>
-
-
-
-    <mat-checkbox class="checkbox-field" formControlName="filledForm" required>
-      J'ai rempli le formulaire
-    </mat-checkbox>
-    -->
-   
-   
     <p>
       Il ne te reste plus qu'à choisir un mot de passe. :-)
     </p>
-
+    
     <!-- Password -->
     <mat-form-field class="full-width">
       <input matInput type="password" formControlName="password" placeholder="Mot de passe" required>
diff --git a/src/app/signup/student-signup/student-signup.component.scss b/src/app/signup/student-signup/student-signup.component.scss
index 3a616f6..9c39d1a 100644
--- a/src/app/signup/student-signup/student-signup.component.scss
+++ b/src/app/signup/student-signup/student-signup.component.scss
@@ -2,3 +2,18 @@
   display: block;
   margin: .5em 0;
 }
+.form-group{
+  display:flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+.horizontal-display{
+  width:45%;
+}
+.adress-input{
+  margin:5px;
+}
+
+.quarter-display{
+  width:25%;
+}
\ No newline at end of file
diff --git a/src/app/signup/student-signup/student-signup.component.ts b/src/app/signup/student-signup/student-signup.component.ts
index 95a4b36..a07350b 100644
--- a/src/app/signup/student-signup/student-signup.component.ts
+++ b/src/app/signup/student-signup/student-signup.component.ts
@@ -4,7 +4,7 @@ import { Router } from '@angular/router';
 import { MatSnackBar } from '@angular/material';
 import { Observable } from 'rxjs';
 import { tap, mergeMap } from 'rxjs/operators';
-import { Registration, RegistrationService, PasswordErrorStateMatcher } from '../core';
+import { Registration, RegistrationService, PasswordErrorStateMatcher,PersonnalData,PersonnalDataService } from '../core';
 import { AuthService } from 'app/core';
 
 
@@ -16,17 +16,51 @@ import { AuthService } from 'app/core';
 export class StudentSignupComponent implements OnInit {
 
   registration: Registration;
+  personnalData: PersonnalData
   formGroup: FormGroup;
   loading = false;
+  public showPersonnalDataForm = false;
+  public zipPattern = new RegExp(/^\d{5}(?:\d{2})?$/)
+  public possibleParentsStatus = [
+    {id:"maried",name:"Mariés"},
+    {id:"divorced",name:"Divorcés"},
+    {id:"cohabitation",name:"En concubinage"},
+    {id:"monoparental",name:"Famille monoparentale"}
+  ]
+
+  public possibleParentsActivities = [
+    {id:"farmer",name:"Agriculteur"},
+    {id:"artisan",name:"Artisan, commerçant, chef d'entreprise"},
+    {id:"executive",name:"Cadre, profession intellectuelle supérieure"},
+    {id:"teacher",name:"Enseignant et assimilé"},
+    {id:"intermediate",name:"Profession intermédiaire"},
+    {id:"employee",name:"Employé"},
+    {id:"worker",name:"Ouvrier"},
+    {id:"retreated",name:"Retraité"},
+    {id:"inactive",name:"Inactif"},
+    {id:"other",name:"Autre"} 
+  ]
+
+  public possibleScholarships = [
+    {id:"echelon1",name:"Oui, échelon 1"},
+    {id:"echelon2",name:"Oui, échelon 2"},
+    {id:"echelon3",name:"Oui, échelon 3"},
+    {id:"echelon4",name:"Oui, échelon 4"},
+    {id:"echelon5",name:"Oui, échelon 5"},
+    {id:"echelon6",name:"Oui, échelon 6"},
+    {id:"no",name:"Non"},
+  ]
 
   matcher = new PasswordErrorStateMatcher();
 
   constructor(
     private registrationService: RegistrationService,
+    private personnalDataService : PersonnalDataService,
     private formBuilder: FormBuilder,
     private router: Router,
     private auth: AuthService,
     private snackBar: MatSnackBar,
+    
   ) { }
 
   ngOnInit() {
@@ -34,11 +68,29 @@ export class StudentSignupComponent implements OnInit {
   }
 
   createForm() {
+    
     this.formGroup = this.formBuilder.group({
       firstName: '',
       lastName: '',
       email: ['', Validators.email],
       phoneNumber: '',
+      gender:'',
+      adressNumber:'',
+      street:'',
+      zipCode:['',Validators.pattern(this.zipPattern)],
+      city:'',
+      personnalPhone:'',
+      parentsPhone:'',
+      parentsEmail:['',Validators.email],
+      school:'',
+      grade:'',
+      section:'',
+      specialTeaching:'',
+      scholarship:'',
+      fatherActivity:'',
+      motherActivity:'',
+      parentsStatus:'',
+      dependantsNumber:'',
       password: '',
       passwordConfirm: '',
       agree: [false, Validators.required],
@@ -53,10 +105,16 @@ export class StudentSignupComponent implements OnInit {
     const passwordConfirm = group.controls.passwordConfirm.value;
     return password === passwordConfirm ? null : { passwordsDifferent: true };
   }
-
+  toggleShowPersonnalDataForm(){
+    this.showPersonnalDataForm = !this.showPersonnalDataForm;
+  }
   submit() {
     this.loading = true;
-    const registration: Registration = this.formGroup.value;
+    const {email,firstName,lastName,phoneNumber} = this.formGroup.value
+    //const {gender,adressNumber,street,zipCode,city,personnalPhone,parentsPhone,parentsEmail,school,grade,section,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber} = this.formGroup.value;
+    const registration: Registration = {email,firstName,lastName,phoneNumber};
+   // const personnalData: PersonnalData = {gender,adressNumber,street,zipCode,city,personnalPhone,parentsPhone,parentsEmail,school,grade,section,specialTeaching,scholarship,fatherActivity,motherActivity,parentsStatus,dependantsNumber};
+   
     const password: string = this.formGroup.controls.password.value;
     this.registrationService.create(registration, password).pipe(
       mergeMap(() => this.auth.login(registration.email, password)),
@@ -66,10 +124,16 @@ export class StudentSignupComponent implements OnInit {
         { duration: 3000 },
       )),
       tap(() => this.loading = false),
-      tap(() => this.router.navigate(['/'])),
     ).subscribe(
       () => {},
       (error) => this.loading = false,
     );
+    // this.personnalDataService.create(personnalData).pipe(
+    //   tap(() => this.loading = false),
+    //   tap(() => this.router.navigate(['/'])),
+    // ).subscribe(
+    //   () => {},
+    //   (error) => this.loading = false,
+    // );
   }
 }
diff --git a/tsconfig.json b/tsconfig.json
index a35a8ee..4dfbe28 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,7 @@
 {
   "compileOnSave": false,
   "compilerOptions": {
+
     "outDir": "./dist/out-tsc",
     "baseUrl": "src",
     "sourceMap": true,
@@ -15,6 +16,7 @@
     "lib": [
       "es2016",
       "dom"
-    ]
+    ],
+    "skipLibCheck": true
   }
 }
-- 
GitLab