From 0d399c21bcc93dd7652638490af844b1d6664db3 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 25 Mar 2020 18:10:26 +0100
Subject: [PATCH 01/19] small UI fix

---
 views/DE/project/addProjectOverview.pug | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index 08a39171..9ed2c76e 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -43,12 +43,12 @@ html(lang="de")
                     for error, i in errors
                         div.alert.alert-danger.alert-dismissible.fade.show #{ error }
                             a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
-                form(method="POST")
+                form(method="POST" encType="multipart/form-data")
                     div(class='form-row')
                         div(class='form-group col-md-12')
-                            input#inputPname(name="pname" class="form-control" type="text" placeholder="Projekttitel*" required)
+                            input#inputPname(name="title" class="form-control" type="text" placeholder="Projekttitel*" required)
                         div(class="form-group col-md-12")
-                            input#inputTitle(name="title" class="form-control" type="text" placeholder="Akronym*" required)
+                            input#inputTitle(name="pname" class="form-control" type="text" placeholder="Akronym*" required)
                         div(class="form-group col-md-12")
                             input#inputSummary(name="summary" class="form-control" type="text" placeholder="Kurzbeschreibung")
                         div(class='form-group col-md-12')
@@ -59,7 +59,10 @@ html(lang="de")
                                 option(value="Lehr Projekt") Lehr Projekt
                                 option(value="Transfer-projekt") Transfer-projekt
                         div(class="form-group col-md-12")
-                            input#inputLogo(name="logo" class="form-control" type="text" placeholder="Projektlogo, to be implemented: upload picture")
+                            div(class='form-group row')
+                                label(for="projectLogo" class="col-sm-3 col-form-label") Projektlogo (max. 1 MB)
+                                div(class="col-md-9")
+                                    input#inputLogo(name="logo" class="form-control" type="file")
                         div(class="form-group col-md-12")
                             div(class="input-group mb-3")
                                 input#inputGitlabURL(name="gitlabURL" type="text" class="form-control" placeholder="M4_LAB GitLab Project URL, z.B. https://transfer.hft-stuttgart.de/gitlab/username/projectname")
@@ -85,12 +88,11 @@ html(lang="de")
                         div(class='form-group col-md-12')
                             input#inputAnnouncement(name="announcement" class="form-control" type="text" rows="5" placeholder="Ausschreibung")
                         div(class="form-group col-md-12")
-                            div(class='form-row')
-                                div(class="form-group col-md-2")
-                                    <p class="font-weight-normal">Laufzeit</p>
-                                div(class="form-group col-md-5")
+                            div(class='form-group row')
+                                label(for="projectLogo" class="col-sm-2 col-form-label") Laufzeit
+                                div(class="col-md-5")
                                     input#inputTermFrom(name="termForm" class="form-control" type="text" placeholder="von (dd.mm.yyyy)")
-                                div(class="form-group col-md-5")
+                                div(class="col-md-5")
                                     input#inputTermTo(name="termTo" class="form-control" type="text" placeholder="bis (dd.mm.yyyy)")
                         div(class='form-group col-md-12')
                             textarea#inputFurtherDetails(name="furtherDetails" class="form-control" type="text" rows="5" placeholder="Weitere Informationen (bspw. Links zu Berichten)")
@@ -99,7 +101,10 @@ html(lang="de")
                     h5(class="mb-3 font-weight-bold") Bilder
                     div(class='form-row')
                         div(class="form-group col-md-12")
-                            input#inputSrc(name="src" class="form-control" type="text" placeholder="To be implemented: upload picture")
+                            div(class='form-group row')
+                                label(for="projectPicture" class="col-sm-3 col-form-label") Projektbild (max. 1 MB)
+                                div(class="col-md-9")
+                                    input#inputSrc(name="src" class="form-control" type="file")
                         div(class="form-group col-md-12")
                             input#inputCaption(name="caption" class="form-control" type="text" placeholder="Bildunterschrift/Bildquelle")
                     h5(class="mb-3 font-weight-bold") Kontakt
-- 
GitLab


From bf400ba45950e85cc0703354a562238779e7c7e3 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 25 Mar 2020 22:09:03 +0100
Subject: [PATCH 02/19] fix MLAB-147 (upload picture)

---
 app.js                   | 12 +++++++++++-
 package.json             |  1 +
 routes/routes-project.js | 42 ++++++++++++++++++++++++++++++++++++----
 3 files changed, 50 insertions(+), 5 deletions(-)

diff --git a/app.js b/app.js
index f3ed756b..68d3e944 100644
--- a/app.js
+++ b/app.js
@@ -8,6 +8,8 @@ const bodyParser = require('body-parser');
 const session = require('express-session');
 const errorhandler = require('errorhandler');
 const flash = require('express-flash');
+const fileUpload = require('express-fileupload');
+
 const i18n = require('i18n'); // internationalization
 i18n.configure({
   locales:['de', 'en'],
@@ -22,12 +24,20 @@ var app = express();
 app.set('port', config.app.port);
 app.set('views', __dirname + '/views');
 app.set('view engine', 'pug');
+
+// enable files upload
+app.use(fileUpload({
+  createParentPath: true,
+  limits: { 
+    fileSize: 1000000 // 1 MB max. file size
+  }
+}));
+
 app.use(morgan('combined'));
 app.use(cookieParser());
 app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({extended: false}));
 app.use(express.static(path.join(__dirname, 'public')));
-
 app.use(i18n.init);
 app.use((req, res, next) => {
   res.setLocale('de');
diff --git a/package.json b/package.json
index 2c3a2562..2df85495 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
     "crypto": "^1.0.1",
     "errorhandler": "1.4.3",
     "express": "^4.17.1",
+    "express-fileupload": "^1.1.6",
     "express-flash": "0.0.2",
     "express-session": "^1.17.0",
     "fs": "0.0.1-security",
diff --git a/routes/routes-project.js b/routes/routes-project.js
index 95534ff5..e15525e1 100644
--- a/routes/routes-project.js
+++ b/routes/routes-project.js
@@ -1,5 +1,6 @@
 const methods = require('./methods')
 const async = require('async')
+const pictSizeLimit = 1000000 // 1 MB
 
 module.exports = function (app) {
  
@@ -38,7 +39,7 @@ module.exports = function (app) {
     ])
   });
 
-  app.get('/project_', function (req, res) {
+  app.get('/project', function (req, res) {
     async.waterfall([
       // get all projects from projectdb
       function(done) {
@@ -91,7 +92,7 @@ module.exports = function (app) {
     ])
   })
 
-  app.get('/project', function (req, res) {
+  app.get('/project_', function (req, res) {
     res.render(lang+'/project/project-simplified');
   })
 
@@ -156,13 +157,18 @@ module.exports = function (app) {
       if (req.body.wiki)
         wiki = 1
 
+      var projectLogo = req.files.logo
+      var projectPicture = req.files.src
+      var projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name
+      var projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name
       var projectTerm = req.body.termForm + " - " + req.body.termTo
+      
       var projectOverviewData = {
         pname: req.body.pname,
         title: req.body.title,
         onelinesummary: req.body.summary,
         category: req.body.category,
-        logo: req.body.logo,
+        logo: projectLogoPath,
         gitlab: req.body.gitlabURL,
         wiki: wiki,
         overview: req.body.overview,
@@ -174,7 +180,7 @@ module.exports = function (app) {
         term: projectTerm,
         further_details: req.body.furtherDetails,
         website: req.body.website,
-        src: req.body.src,
+        src: projectPicturePath,
         caption: req.body.caption,
         contact_lastname: req.body.contactName,
         contact_email: req.body.contactEmail,
@@ -182,6 +188,34 @@ module.exports = function (app) {
         leader_email: req.body.leaderEmail
       }
       
+      // raise error if limit is exceeded
+      if (projectLogo && projectLogo.size === pictSizeLimit) {
+        req.flash('error', 'Projektlogo exceeds 1 MB');
+        res.redirect('/addprojectoverview');
+      }
+      if (projectPicture && projectPicture.size === pictSizeLimit) {
+        req.flash('error', 'Projektbild exceeds 1 MB');
+        res.redirect('/addprojectoverview');
+      }
+
+      // save pictures
+      projectLogo.mv('./folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name, function(err) {
+        if (err) {
+          console.error(err)
+          res.status(500).render(lang+'/500', {
+            error: err
+          })
+        }
+      });
+      projectPicture.mv('./folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name, function(err) {
+        if (err) {
+          console.error(err)
+          res.status(500).render(lang+'/500', {
+            error: err
+          })
+        }
+      });
+
       /* RS: Temporary solution while Project DB is still in early phase.
               When User DB and Project DB are integrated and quite stabil, this operation should be done in 1 transaction.
       */
-- 
GitLab


From 4c9eca6434f38dc2294c3cb27ba722473f5186f7 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 26 Mar 2020 09:21:38 +0100
Subject: [PATCH 03/19] fix MLAB-147 (upload picture)

---
 routes/routes-project.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/routes/routes-project.js b/routes/routes-project.js
index e15525e1..acf57fb1 100644
--- a/routes/routes-project.js
+++ b/routes/routes-project.js
@@ -159,10 +159,14 @@ module.exports = function (app) {
 
       var projectLogo = req.files.logo
       var projectPicture = req.files.src
+      // TEST PATH FOR DEVELOPMENT (LOCALHOST)
       var projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name
       var projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name
-      var projectTerm = req.body.termForm + " - " + req.body.termTo
+      // PATH FOR TEST/LIVE SERVER
+      // var projectLogoPath = to-be-defined
+      // var projectPicturePath = to-be-defined
       
+      var projectTerm = req.body.termForm + " - " + req.body.termTo
       var projectOverviewData = {
         pname: req.body.pname,
         title: req.body.title,
-- 
GitLab


From 5c517cb4ec700eb29b9c0052252f7f8b2b2689f6 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 26 Mar 2020 16:29:39 +0100
Subject: [PATCH 04/19] fixing upload pictures

---
 routes/routes-project.js | 79 ++++++++++++++++++++++++----------------
 1 file changed, 48 insertions(+), 31 deletions(-)

diff --git a/routes/routes-project.js b/routes/routes-project.js
index 5cc700e0..9cb49659 100644
--- a/routes/routes-project.js
+++ b/routes/routes-project.js
@@ -164,12 +164,35 @@ module.exports = function (app) {
 
       var projectLogo = req.files.logo
       var projectPicture = req.files.src
-      // TEST PATH FOR DEVELOPMENT (LOCALHOST)
-      var projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name
-      var projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name
-      // PATH FOR TEST/LIVE SERVER
-      // var projectLogoPath = to-be-defined
-      // var projectPicturePath = to-be-defined
+      var projectLogoPath, projectPicturePath
+      
+      if (projectLogo) {
+        // raise error if size limit is exceeded
+        if (projectLogo.size === pictSizeLimit) {
+          req.flash('error', 'Projektlogo exceeds 1 MB');
+          res.redirect('/addprojectoverview');
+        }
+        else {
+          // TEST PATH FOR DEVELOPMENT (LOCALHOST)
+          projectLogoPath = './folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name
+          // PATH FOR TEST/LIVE SERVER
+          // var projectLogoPath = to-be-defined
+        }
+      }
+      if (projectPicture) {
+        // raise error if size limit is exceeded
+        if (projectPicture.size === pictSizeLimit) {
+          req.flash('error', 'Projektbild exceeds 1 MB');
+          res.redirect('/addprojectoverview');
+        }
+        else {
+          // TEST PATH FOR DEVELOPMENT (LOCALHOST)
+          projectPicturePath = './folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name
+          // PATH FOR TEST/LIVE SERVER
+          // var projectPicturePath = to-be-defined
+        }
+        
+      }
       
       var projectTerm = req.body.termForm + " - " + req.body.termTo
       var projectOverviewData = {
@@ -197,34 +220,28 @@ module.exports = function (app) {
         leader_email: req.body.leaderEmail
       }
       
-      // raise error if limit is exceeded
-      if (projectLogo && projectLogo.size === pictSizeLimit) {
-        req.flash('error', 'Projektlogo exceeds 1 MB');
-        res.redirect('/addprojectoverview');
+      // save pictures
+      if (projectLogo) {
+        projectLogo.mv(projectLogoPath, function(err) {
+          if (err) {
+            console.error(err)
+            res.status(500).render(lang+'/500', {
+              error: err
+            })
+          }
+        });
       }
-      if (projectPicture && projectPicture.size === pictSizeLimit) {
-        req.flash('error', 'Projektbild exceeds 1 MB');
-        res.redirect('/addprojectoverview');
+      if (projectPicture) {
+        projectPicture.mv(projectPicturePath, function(err) {
+          if (err) {
+            console.error(err)
+            res.status(500).render(lang+'/500', {
+              error: err
+            })
+          }
+        });
       }
 
-      // save pictures
-      projectLogo.mv('./folder-in-server-to-save-projektlogo/'+req.body.pname+'/'+projectLogo.name, function(err) {
-        if (err) {
-          console.error(err)
-          res.status(500).render(lang+'/500', {
-            error: err
-          })
-        }
-      });
-      projectPicture.mv('./folder-in-server-to-save-projektbild/'+req.body.pname+'/'+projectPicture.name, function(err) {
-        if (err) {
-          console.error(err)
-          res.status(500).render(lang+'/500', {
-            error: err
-          })
-        }
-      });
-
       /* RS: Temporary solution while Project DB is still in early phase.
               When User DB and Project DB are integrated and quite stabil, this operation should be done in 1 transaction.
       */
-- 
GitLab


From 162336bc3e46d6d2cf0e6386d970d30697da9f8f Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Thu, 2 Apr 2020 15:12:58 +0200
Subject: [PATCH 05/19] UI minor update: Translation

---
 routes/routes-account.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index e075f04d..39fb86eb 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -292,7 +292,8 @@ module.exports = function (app, config, passport, i18n) {
               }
               else {
                 if ( newPwd != retypePwd ) {
-                  req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
+                  //req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
+                  req.flash('error', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
                   res.redirect('/security')
                 }
                 else {
-- 
GitLab


From 7192c302fc8f662b97b1dbea1b904ce45e9bf92b Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Mon, 6 Apr 2020 14:49:03 +0200
Subject: [PATCH 06/19] localhost configuration

---
 config/config.js | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/config/config.js b/config/config.js
index 5c0c2cfc..839d819b 100644
--- a/config/config.js
+++ b/config/config.js
@@ -9,19 +9,20 @@ module.exports = {
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
         entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        //issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
-        issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
+        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
+        //issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
         //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
         logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
       }
     },
     database: {
-      host: 'transfer.hft-stuttgart.de',      	  // DB host
+      //host: 'transfer.hft-stuttgart.de',      	  // DB host
       user: 'DBManager',          // DB username
       password: 'Stuttgart2019',  // DB password
       port: 3306,                 // MySQL port
       dbUser: 'userdb',           // User DB
-      host_project: 'm4lab.hft-stuttgart.de', // DB host project db
+      //host_project: 'm4lab.hft-stuttgart.de', // DB host project db
+      host_project: 'localhost', // local
       dbProject: 'projectDB'     // Project DB
     },
     mailer: {
-- 
GitLab


From 327d3ec697a03c60cef432af2d75fd4ff01d198d Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 6 Apr 2020 15:11:43 +0200
Subject: [PATCH 07/19] added contact page pug

---
 views/DE/account/contact.pug | 81 ++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100644 views/DE/account/contact.pug

diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
new file mode 100644
index 00000000..da6798fd
--- /dev/null
+++ b/views/DE/account/contact.pug
@@ -0,0 +1,81 @@
+doctype html
+html(lang="de")
+  head
+    title= "Kontakt"
+    meta(charset="UTF-8")
+    meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/fonts/ionicons.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.css")
+    link(rel="stylesheet", type="text/css", href="/css/Testimonials.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
+    style.
+        .collapse {
+            display: none;
+        }
+        .collapse.in {
+            display: block;
+        }
+        .collapsing {
+            position: relative;
+            height: 0;
+            overflow: hidden;
+            -webkit-transition-timing-function: ease;
+            -o-transition-timing-function: ease;
+            transition-timing-function: ease;
+            -webkit-transition-duration: .35s;
+            -o-transition-duration: .35s;
+            transition-duration: .35s;
+            -webkit-transition-property: height,visibility;
+            -o-transition-property: height,visibility;
+            transition-property: height,visibility;
+        }
+  body
+    div(class="container")
+        div(class="row")
+            div(class="col-md-12" style="margin-bottom: 40px;")
+                img(class="mx-auto" src="/img/Kontakt.jpg" width="100%")
+    div(class="contact-clean" style="background-color: rgb(234,234,234);")
+        if successes
+            for success in successes
+                div.alert.alert-success.alert-dismissible #{ success }
+                    a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+        if errors
+            for error, i in errors
+                div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                    a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+        form(method="POST")
+            h2(class="text_center") Kontaktieren Sie uns
+            div(class="form-group")
+                input#name(class="form-control" type="text" name="name" placeholder="Name")
+            div(class="form-group")
+                input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*", maxlength="45" required)
+                span#emailWarning(class='warning')
+            div(class="form-group")
+                textarea#message(class="form-control" name="message" placeholder="Nachricht" rows="14")
+            div(class="form-group") <button class="btn btn-primary" type="submit" style="background-color: #8a348b;">SENDEN</button>
+    div(class="contact-clean" style="background-color: rgb(234,234,234);padding: 80px;padding-top: 0px;")
+        form(method="POST")
+            p(style="margin-top: 25px;") <strong>Hochschule für Technik Stuttgart</strong><br/>Institut für Angewandte Forschung<br/>Innovative Hochschule - Projekt M4_LAB<br/>Schellingstr. 24<br/>70174 Stuttgart<br/>Deutschland<br/><br/><a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a><br/><br/><a href="https://www.hft-stuttgart.de/">www.hft-stuttgart.de</a> / <a href="https://www.hft-stuttgart.de/M4LAB">www.hft-stuttgart.de/M4LAB</a><br/>
+    div(style="background-color: rgba(138,52,139,0.45);")
+        div(class="container")
+            div(class="row")
+                div(class="col-md-4 col-lg-2")
+                div(class="col-md-4 col-lg-8")
+                    div(style="background-color: #feffff;margin: 0px;padding: 60px;padding-top: 20px;padding-bottom: 20px;")
+                        img(class="d-flex d-lg-flex justify-content-center justify-content-lg-center align-items-lg-start mx-auto" src="/img/Logo_TV1.png" width="100px" style="padding-bottom: 35px;")
+                        h2(class="text-center" style="color: #8a348b;") <strong>Transferportal</strong>
+                        p(class="text-center") Das Transferportal entsteht in einem Teilprojekt der Innovativen <a href="https://www.hft-stuttgart.de">Hochschule für Technik Stuttgart</a>. Im <a href="https://www.hft-stuttgart.de/forschung/innovative-hochschule-m4-lab">Innovationslabor M4_LAB</a> wird das Transferportal als eine Webpräsenz entwickelt, welches Wissen, Lösungen und Dienste für HFT-Mitglieder, externe Partner und die allgemeine Öffentlichkeit bereitstellt.<br/><br/>Es ergänzt die Informationen der allgemeinen HFT-Webseite durch konkrete Ergebnisse aus Forschung und Entwicklung, verfügbar in verschiedenster Form wie beispielsweise Daten, Dokumentationen und Software-Code.<br/><br/>Zudem stellt es Kollaborationsmittel für Projektpartner und später auch Partizipationsmöglichkeiten für die breite Öffentlichkeit bereit.
+                div(class="col-md-4 col-lg-2")
+
+
+    // jQuery
+    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
+    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
+    // Bootstrap
+    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
+    // M4_LAB
+    script(src="/js/registration.js")
+    script(src="/js/headfoot.js")
-- 
GitLab


From 1f2f6503d6954449c86a53ab92307af57619c247 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 6 Apr 2020 15:34:52 +0200
Subject: [PATCH 08/19] removed registration.js from contacts

---
 views/DE/account/contact.pug | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index da6798fd..25e4dc9c 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -52,10 +52,10 @@ html(lang="de")
                 input#name(class="form-control" type="text" name="name" placeholder="Name")
             div(class="form-group")
                 input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*", maxlength="45" required)
-                span#emailWarning(class='warning')
             div(class="form-group")
                 textarea#message(class="form-control" name="message" placeholder="Nachricht" rows="14")
-            div(class="form-group") <button class="btn btn-primary" type="submit" style="background-color: #8a348b;">SENDEN</button>
+            div(class="form-group")
+                input#submitBtn(class="btn btn-primary" type="submit" style="background-color: #8a348b;" value="SENDEN")
     div(class="contact-clean" style="background-color: rgb(234,234,234);padding: 80px;padding-top: 0px;")
         form(method="POST")
             p(style="margin-top: 25px;") <strong>Hochschule für Technik Stuttgart</strong><br/>Institut für Angewandte Forschung<br/>Innovative Hochschule - Projekt M4_LAB<br/>Schellingstr. 24<br/>70174 Stuttgart<br/>Deutschland<br/><br/><a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a><br/><br/><a href="https://www.hft-stuttgart.de/">www.hft-stuttgart.de</a> / <a href="https://www.hft-stuttgart.de/M4LAB">www.hft-stuttgart.de/M4LAB</a><br/>
@@ -77,5 +77,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/registration.js")
     script(src="/js/headfoot.js")
-- 
GitLab


From e4a4e39d8af13f7340b419534b9394f0ecb8c33d Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Mon, 6 Apr 2020 15:55:35 +0200
Subject: [PATCH 09/19] activate simplified project

---
 routes/routes-project.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/routes/routes-project.js b/routes/routes-project.js
index 9cb49659..00b2e056 100644
--- a/routes/routes-project.js
+++ b/routes/routes-project.js
@@ -41,7 +41,7 @@ module.exports = function (app) {
     ])
   });
 
-  app.get('/project', function (req, res) {
+  app.get('/project_', function (req, res) {
     async.waterfall([
       // get all projects from projectdb
       function(done) {
@@ -94,7 +94,7 @@ module.exports = function (app) {
     ])
   })
 
-  app.get('/project_', function (req, res) {
+  app.get('/project', function (req, res) {
     res.render(lang+'/project/project-simplified', {
        isUserAuthenticated: req.isAuthenticated(),
        user: req.user
-- 
GitLab


From 42bfd86a38a9456516c1690e0fe6661acad48b0a Mon Sep 17 00:00:00 2001
From: Varun <92srva1mst@hft-stuttgart.de>
Date: Wed, 8 Apr 2020 18:19:59 +0200
Subject: [PATCH 10/19] project screen collapse changes

---
 views/DE/project/project-simplified.pug |  56 ++++---
 views/DE/project/project.html           | 192 +++++++++++++++---------
 2 files changed, 156 insertions(+), 92 deletions(-)

diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index 6dead87f..222e30ca 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -7,36 +7,41 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
-        .warning {
-            color: red;
-            font-size: 11px;
-        }
+      .help .card-title > a:before {
+        float: right !important;
+        content: "-";
+        padding-right: 5px;
+      }
+      .help .card-title > a.collapsed:before {
+          float: right !important;
+          content: "+";
+      }
+      .help h3 > a {
+        color: #8a348b;
+        text-decoration: none;
+        display: block;
+      }
+      .help a {
+          display: inline;
+      }
+      .help .card > .card-header {
+        color: #fff;
+      }
+      .card-title {
+        margin-bottom: 0.5rem;
+        margin-top: 0.5rem;
+      }
+      #infoicon {
+        color: #8a348b;
+      }
   body
     include project.html
 
 
     // jQuery
+    
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
+    script(src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
@@ -44,4 +49,5 @@ html(lang="de")
     if isUserAuthenticated
         script(src="/js/headfootLogout.js")
     else
-        script(src="/js/headfoot.js")
\ No newline at end of file
+        script(src="/js/headfoot.js")
+        
\ No newline at end of file
diff --git a/views/DE/project/project.html b/views/DE/project/project.html
index df461962..ac3137df 100644
--- a/views/DE/project/project.html
+++ b/views/DE/project/project.html
@@ -1,70 +1,128 @@
-        <div class="container">
-            <hr />
-            <!-- text: Zweck dieser Seite / purpose of this page -->
-            <i class="fas fa-info-circle"></i> Diese Seite bietet den Einstieg zu den unterschiedlichen Projekten, die in unserem Portal für die Öffentlichkeit bereitgestellt werden.
-            Für diesen Zweck steht zur Zeit ein Dienst bereit: eine von der HFT selbst verwaltete Gitlab-Instanz.
-            Alle der in diesem Gitlab erfassten Projektinhalte unterliegen einer Open Source bzw. Open Data Lizenz.
-            <p>Hinweis: Die Nutzeroberfläche von GitLab ist in Englisch.</p>
+<div class="container">
+    <hr />
+    <!-- text: Zweck dieser Seite / purpose of this page -->
+    <div>
+        <i id="infoicon" class="fas fa-info-circle fa-lg"></i> 
+        Diese Seite bietet den Einstieg zu den unterschiedlichen Projekten, die in
+        unserem Portal für die Öffentlichkeit bereitgestellt werden.
+        Für diesen Zweck steht zur Zeit ein Dienst bereit: eine von der HFT selbst verwaltete Gitlab-Instanz.
+        Alle der in diesem Gitlab erfassten Projektinhalte unterliegen einer Open Source bzw. Open Data Lizenz.
+        <p class="font-italic"><b>Hinweis: </b>Die Nutzeroberfläche von GitLab ist in Englisch.</p>
+    </div>
 
-            <!-- link: Gitlab Projekte / Gitlab project list -->
-            <h2> Direkteinstieg </h2>
-            <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Gitlab Projects</i></a>
-            
-            <!-- text: Hilfestellung zu Gitlab / short help about Gitlab -->
-            <hr />
-            <h2> Hilfestellung zu GitLab </h2>
 
-            <h3> <i class="fas fa-question-circle"></i> Möchten Sie die Projektinhalte ansehen oder herunterladen? </h3>
-            <p>
-                Dann klicken Sie auf diesen <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a> um die Liste aller im Gitlab erfassten Projekte zu sehen.
-                Vor dort können Sie dann auf die einzelnen Projekte zugreifen.
-                Ein Anmelden am Portal ist dazu nicht nötig.
-            </p>
-            
-            <h3> <i class="fas fa-question-circle"></i> Möchten Sie zu einem Projekt beitragen? </h3>	
-            <p>
-            Wenn Sie dem Projekteigentümer eine Rückmeldung bzw. einen Fehler melden wollen, navigieren Sie im Gitlab zunächst zum entsprechenden Projekt.
-            Anschließend können Sie dann dort die Möglichkeit nutzen, ein neues "Issues" einzureichen.
-            Ein Anmelden am Portal ist dazu nicht nötig.
-            </p>
-            <p>
-            Wenn Sie darüberhinaus beitragen wollen, befolgen Sie bitte folgende Schritte:
-            </p>
-            <ol>
-                <li>
-                    Melden Sie sich bitte im Portal an. <br>
-                    Sofern Sie noch nicht als Nutzer im Portal eingetragen sind, wird das System Sie durch die Registrierung leiten. <br>
-                    Zur Anmeldung bzw. Registrierung gelangen Sie entweder über das Menü am oberen Seitenrand oder durch Klicken auf diesen <a href="https://m4lab.hft-stuttgart.de/account/"> <i class="fas fa-chevron-right">Link zum Benutzerkonto</i></a>.
-                </li>
-                <li>
-                    Folgen Sie dem <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>, um zum Gitlab zu gelangen.
-                </li>
-                <li>
-                    Fragen Sie beim Projekteigentümer um Zugang, indem Sie im Gitlab bei der entsprechende Projektseite auf den Link <em>Request Access</em> klicken. Solbald dieser ihre Anfrage bestätigt hat, können Sie loslegen.
-                </li>
-            </ol>
+    <!-- link: Gitlab Projekte / Gitlab project list -->
+    <h2> Direkteinstieg </h2>
+    <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Gitlab
+            Projects</i></a>
 
-            <h3> <i class="fas fa-question-circle"></i> Möchten Sie selbst ein Projekt anlegen, um es der Öffentlichkeit bereitzustellen? </h3>
-            
-            </p>
-            Vorraussetzung dazu ist, dass Sie aktives oder ehemaliges Mitglied der Hochschule für Technik sind, d.h. eine (noch) gültige HFT-Emailadresse haben.
-            Dann befolgen Sie bitte folgende Schritte:
-            </p>
-            
-            <ol>
-                <li>
-                    Melden Sie sich bitte im Portal an. <br>
-                    Sofern Sie noch nicht als Nutzer im Portal eingetragen sind, wird das System Sie durch die Registrierung leiten. <br>
-                    Zur Anmeldung bzw. Registrierung gelangen Sie entweder über das Menü am oberen Seitenrand oder durch Klicken auf diesen <a href="https://m4lab.hft-stuttgart.de/account/"> <i class="fas fa-chevron-right">Link zum Benutzerkonto</i></a>.
-                </li>
-                <li>
-                    Folgen Sie dem <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>, um zum Gitlab zu gelangen.
-                </li>
-                <li>
-                    Erstellen Sie dann in Gitlab ein neues Projekt durch Klicken auf den grünen <em>New Project</em>-Knopf und anschließendem Befolgen der Eingabemaske von Gitlab. <br>
-                    Weitere Hilfestellung zum Anlegen von Projekten in Gitlab finden Sie in der <a href="https://docs.gitlab.com/ee/gitlab-basics/create-project.html"> <i class="fas fa-chevron-right">Gitlab-Dokumentation</i></a>.
-                </li>
-            </ol>
-            
-            <!-- / content body -->
-        </div>
\ No newline at end of file
+    <!-- text: Hilfestellung zu Gitlab / short help about Gitlab -->
+    <hr />
+    
+    <h2>Hilfestellung zu GitLab</h2>
+
+    <br />
+    
+    <div class="help">
+        <div class="card">
+            <div class="card-header">
+                <h3 class="card-title">
+                    <a class="collapsed" data-toggle="collapse" href="#collapse1" aria-expanded="false" aria-controls="collapse1">
+                        Möchten Sie die Projektinhalte ansehen oder herunterladen?</a>
+                </h3>
+            </div>
+            <div id="collapse1" class="card-body collapse">
+                <p>
+                    Dann klicken Sie auf diesen
+                    <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"><i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>
+                    die Liste aller im Gitlab erfassten Projekte zu sehen. Vor dort können Sie dann auf die einzelnen Projekte zugreifen. 
+                    Ein Anmelden am Portal ist dazu nicht nötig.
+                </p>
+            </div>
+        </div>
+
+        <br />
+        
+        <div class="card">
+            <div class="card-header">
+                <h3 class="card-title">
+                    <a class="collapsed" data-toggle="collapse" href="#collapse2" aria-expanded="false" aria-controls="collapse2">
+                        Möchten Sie zu einem Projekt beitragen?</a>
+                </h3>
+            </div>
+            <div id="collapse2" class="card-body collapse">
+                <p>
+                    Wenn Sie dem Projekteigentümer eine Rückmeldung bzw. einen Fehler melden wollen, navigieren Sie im Gitlab zunächst zum entsprechenden Projekt.
+                    Anschließend können Sie dann dort die Möglichkeit nutzen, ein neues "Issues" einzureichen.
+                    Ein Anmelden am Portal ist dazu nicht nötig.
+                </p>
+                <p>
+                    Wenn Sie darüberhinaus beitragen wollen, befolgen Sie bitte folgende Schritte:
+                </p>
+                <ol>
+                    <li>
+                        Melden Sie sich bitte im Portal an. 
+                        <br />
+                        Sofern Sie noch nicht als Nutzer im Portal eingetragen sind, wird das System Sie durch die Registrierung leiten. 
+                        <br />
+                        Zur Anmeldung bzw. Registrierung gelangen Sie entweder über das Menü am oberen Seitenrand oder durch Klicken auf diesen
+                        <a href="https://m4lab.hft-stuttgart.de/account/"> <i class="fas fa-chevron-right">Link zum Benutzerkonto</i></a>.
+                    </li>
+                    <li>
+                        Folgen Sie dem <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> 
+                            <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>, um zum Gitlab zu gelangen.
+                    </li>
+                    <li>
+                        Fragen Sie beim Projekteigentümer um Zugang, indem Sie im Gitlab bei der entsprechende
+                        Projektseite auf den
+                        Link <em>Request Access</em> klicken. Solbald dieser ihre Anfrage bestätigt hat, können
+                        Sie loslegen.
+                    </li>
+                </ol>
+            </div>
+        </div>
+
+        <br />
+
+        <div class="card">
+            <div class="card-header">
+                <h3 class="card-title">
+                    <a class="collapsed" data-toggle="collapse" href="#collapse3" aria-expanded="false" aria-controls="collapse3">
+                        Möchten Sie selbst ein Projekt anlegen, um es der Öffentlichkeit bereitzustellen?</a>
+                </h3>
+            </div>
+            <div id="collapse3" class="card-body collapse">
+                <p>
+                    Vorraussetzung dazu ist, dass Sie aktives oder ehemaliges Mitglied der Hochschule für Technik sind,
+                    d.h. eine (noch) gültige HFT-Emailadresse haben. Dann befolgen Sie bitte folgende Schritte:
+                </p>
+                <ol>
+                    <li>
+                        <p>
+                            Melden Sie sich bitte im Portal an. 
+                            <br />
+                            Sofern Sie noch nicht als Nutzer im Portal eingetragen sind, wird das System Sie durch die Registrierung leiten. 
+                            <br />
+                            Zur Anmeldung bzw. Registrierung gelangen Sie entweder über das Menü am oberen Seitenrand oder durch Klicken auf diesen 
+                            <a href="https://m4lab.hft-stuttgart.de/account/"> <i class="fas fa-chevron-right">Link zum Benutzerkonto</i></a>.
+                        </p>
+                    </li>
+                    <li>
+                        Folgen Sie dem <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> 
+                            <i class="fas fa-chevron-right">Link zu den Gitlab-Projekten</i></a>, um zum Gitlab zu gelangen.
+                    </li>
+                    <li>
+                        Erstellen Sie dann in Gitlab ein neues Projekt durch Klicken auf den grünen <em>New Project</em>-Knopf und
+                        anschließendem Befolgen der Eingabemaske von Gitlab. 
+                        <br />
+                        Weitere Hilfestellung zum Anlegen von Projekten in Gitlab finden Sie in der 
+                        <a href="https://docs.gitlab.com/ee/gitlab-basics/create-project.html"> <i class="fas fa-chevron-right">Gitlab-Dokumentation</i></a>.
+                    </li>
+                </ol>
+            </div>
+        </div>
+    </div>
+
+    <hr />
+    <!-- / content body -->
+</div>
\ No newline at end of file
-- 
GitLab


From d321d182719ce9ca22fddbeeddd61ce973883081 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Thu, 9 Apr 2020 10:16:05 +0200
Subject: [PATCH 11/19] removed double import of jquery js

---
 config/config.js                        |   6 +-
 package-lock.json                       | 253 +++++++++++++-----------
 views/DE/project/project-simplified.pug |   3 +-
 3 files changed, 145 insertions(+), 117 deletions(-)

diff --git a/config/config.js b/config/config.js
index 839d819b..b1345231 100644
--- a/config/config.js
+++ b/config/config.js
@@ -16,13 +16,13 @@ module.exports = {
       }
     },
     database: {
-      //host: 'transfer.hft-stuttgart.de',      	  // DB host
+      host: 'transfer.hft-stuttgart.de',      	  // DB host
       user: 'DBManager',          // DB username
       password: 'Stuttgart2019',  // DB password
       port: 3306,                 // MySQL port
       dbUser: 'userdb',           // User DB
-      //host_project: 'm4lab.hft-stuttgart.de', // DB host project db
-      host_project: 'localhost', // local
+      host_project: 'm4lab.hft-stuttgart.de', // DB host project db
+      //host_project: 'localhost', // local
       dbProject: 'projectDB'     // Project DB
     },
     mailer: {
diff --git a/package-lock.json b/package-lock.json
index 1d68e8a5..8def6205 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,12 +7,12 @@
     "@types/babel-types": {
       "version": "7.0.7",
       "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz",
-      "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ=="
+      "integrity": "sha1-Zn6xZA6AOUNgKAVXN9K5mG7jNuM="
     },
     "@types/babylon": {
       "version": "6.16.5",
       "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz",
-      "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==",
+      "integrity": "sha1-HFZB22nrjN83jt0ltL53VL7rSLQ=",
       "requires": {
         "@types/babel-types": "*"
       }
@@ -20,12 +20,12 @@
     "abbrev": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+      "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg="
     },
     "accepts": {
       "version": "1.3.7",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
       "requires": {
         "mime-types": "~2.1.24",
         "negotiator": "0.6.2"
@@ -57,7 +57,7 @@
     "ansi-styles": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
       "requires": {
         "color-convert": "^1.9.0"
       }
@@ -65,7 +65,7 @@
     "anymatch": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
-      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+      "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=",
       "requires": {
         "normalize-path": "^3.0.0",
         "picomatch": "^2.0.4"
@@ -111,7 +111,7 @@
     "babylon": {
       "version": "6.18.0",
       "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
-      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
+      "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM="
     },
     "balanced-match": {
       "version": "1.0.0",
@@ -121,7 +121,7 @@
     "basic-auth": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
-      "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+      "integrity": "sha1-uZgnm/R844NEtPPPkW1Gebv1Hjo=",
       "requires": {
         "safe-buffer": "5.1.2"
       }
@@ -139,12 +139,12 @@
     "binary-extensions": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
-      "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow=="
+      "integrity": "sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w="
     },
     "body-parser": {
       "version": "1.19.0",
       "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
       "requires": {
         "bytes": "3.1.0",
         "content-type": "~1.0.4",
@@ -161,7 +161,7 @@
     "boxen": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
-      "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+      "integrity": "sha1-VcbDmouljZxhrSLNh3Uy3rZlogs=",
       "requires": {
         "ansi-align": "^2.0.0",
         "camelcase": "^4.0.0",
@@ -182,7 +182,7 @@
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
       "requires": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -191,15 +191,23 @@
     "braces": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
       "requires": {
         "fill-range": "^7.0.1"
       }
     },
+    "busboy": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
+      "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==",
+      "requires": {
+        "dicer": "0.3.0"
+      }
+    },
     "bytes": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY="
     },
     "camelcase": {
       "version": "1.2.1",
@@ -209,7 +217,7 @@
     "capture-stack-trace": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
-      "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw=="
+      "integrity": "sha1-psC74fOPOqC5Ijjstv9Cw0TUE10="
     },
     "center-align": {
       "version": "0.1.3",
@@ -223,7 +231,7 @@
     "chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
       "requires": {
         "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
@@ -248,7 +256,7 @@
     "ci-info": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
-      "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A=="
+      "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc="
     },
     "cli-boxes": {
       "version": "1.0.0",
@@ -275,7 +283,7 @@
     "color-convert": {
       "version": "1.9.3",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
       "requires": {
         "color-name": "1.1.3"
       }
@@ -293,7 +301,7 @@
     "configstore": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
-      "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+      "integrity": "sha1-xvJd767vJt8S3TNBSwAf6BpUP48=",
       "requires": {
         "dot-prop": "^4.1.0",
         "graceful-fs": "^4.1.2",
@@ -311,7 +319,7 @@
     "constantinople": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz",
-      "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==",
+      "integrity": "sha1-1F7XJPV9PRBQABen06iJwTga5kc=",
       "requires": {
         "@types/babel-types": "^7.0.0",
         "@types/babylon": "^6.16.2",
@@ -322,7 +330,7 @@
     "content-disposition": {
       "version": "0.5.3",
       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
       "requires": {
         "safe-buffer": "5.1.2"
       }
@@ -330,7 +338,7 @@
     "content-type": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
     },
     "cookie": {
       "version": "0.3.1",
@@ -382,7 +390,7 @@
     "crypto": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
-      "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
+      "integrity": "sha1-KvG3ytgXXSTIobB3glV5SiGAMDc="
     },
     "crypto-random-string": {
       "version": "1.0.0",
@@ -392,7 +400,7 @@
     "debug": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
       "requires": {
         "ms": "2.0.0"
       },
@@ -412,7 +420,7 @@
     "deep-extend": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+      "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw="
     },
     "define-properties": {
       "version": "1.1.3",
@@ -432,6 +440,14 @@
       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
     },
+    "dicer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
+      "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
+      "requires": {
+        "streamsearch": "0.1.2"
+      }
+    },
     "doctypes": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
@@ -440,7 +456,7 @@
     "dot-prop": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
-      "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+      "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=",
       "requires": {
         "is-obj": "^1.0.0"
       }
@@ -514,7 +530,7 @@
     "esutils": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+      "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q="
     },
     "etag": {
       "version": "1.8.1",
@@ -538,7 +554,7 @@
     "express": {
       "version": "4.17.1",
       "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
       "requires": {
         "accepts": "~1.3.7",
         "array-flatten": "1.1.1",
@@ -575,10 +591,18 @@
         "cookie": {
           "version": "0.4.0",
           "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-          "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+          "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo="
         }
       }
     },
+    "express-fileupload": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.1.6.tgz",
+      "integrity": "sha512-w24zPWT8DkoIxSVkbxYPo9hkTiLpCQQzNsLRTCnecBhfbYv+IkIC5uLw2MIUAxBZ+7UMmXPjGxlhzUXo4RcbZw==",
+      "requires": {
+        "busboy": "^0.3.1"
+      }
+    },
     "express-flash": {
       "version": "0.0.2",
       "resolved": "https://registry.npmjs.org/express-flash/-/express-flash-0.0.2.tgz",
@@ -590,7 +614,7 @@
     "express-session": {
       "version": "1.17.0",
       "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz",
-      "integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==",
+      "integrity": "sha1-m1DbteigPDU3NoE48HJzYVC3+bM=",
       "requires": {
         "cookie": "0.4.0",
         "cookie-signature": "1.0.6",
@@ -605,24 +629,24 @@
         "cookie": {
           "version": "0.4.0",
           "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-          "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+          "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo="
         },
         "depd": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+          "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8="
         },
         "safe-buffer": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
-          "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
+          "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk="
         }
       }
     },
     "fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
       "requires": {
         "to-regex-range": "^5.0.1"
       }
@@ -630,7 +654,7 @@
     "finalhandler": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
       "requires": {
         "debug": "2.6.9",
         "encodeurl": "~1.0.2",
@@ -665,7 +689,7 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
     },
     "get-stream": {
       "version": "3.0.0",
@@ -675,7 +699,7 @@
     "glob-parent": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
-      "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+      "integrity": "sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI=",
       "requires": {
         "is-glob": "^4.0.1"
       }
@@ -709,12 +733,12 @@
     "graceful-fs": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
-      "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+      "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM="
     },
     "has": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
       "requires": {
         "function-bind": "^1.1.1"
       }
@@ -732,7 +756,7 @@
     "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==",
+      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
       "requires": {
         "depd": "~1.1.2",
         "inherits": "2.0.3",
@@ -764,7 +788,7 @@
     "iconv-lite": {
       "version": "0.4.24",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
       "requires": {
         "safer-buffer": ">= 2.1.2 < 3"
       }
@@ -787,7 +811,7 @@
     "ini": {
       "version": "1.3.5",
       "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+      "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc="
     },
     "ipaddr.js": {
       "version": "1.9.0",
@@ -797,7 +821,7 @@
     "is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
       "requires": {
         "binary-extensions": "^2.0.0"
       }
@@ -805,7 +829,7 @@
     "is-buffer": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
     },
     "is-callable": {
       "version": "1.1.4",
@@ -815,7 +839,7 @@
     "is-ci": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
-      "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+      "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=",
       "requires": {
         "ci-info": "^1.5.0"
       }
@@ -854,7 +878,7 @@
     "is-glob": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
       "requires": {
         "is-extglob": "^2.1.1"
       }
@@ -876,7 +900,7 @@
     "is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+      "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss="
     },
     "is-obj": {
       "version": "1.0.1",
@@ -912,7 +936,7 @@
     "is-retry-allowed": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
-      "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="
+      "integrity": "sha1-13hIi9CkZmo76KFIK58rqv7eqLQ="
     },
     "is-stream": {
       "version": "1.1.0",
@@ -966,7 +990,7 @@
     "lodash": {
       "version": "4.17.15",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+      "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg="
     },
     "longest": {
       "version": "1.0.1",
@@ -976,12 +1000,12 @@
     "lowercase-keys": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
+      "integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8="
     },
     "lru-cache": {
       "version": "4.1.5",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
       "requires": {
         "pseudomap": "^1.0.2",
         "yallist": "^2.1.2"
@@ -990,7 +1014,7 @@
     "make-dir": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
-      "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+      "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=",
       "requires": {
         "pify": "^3.0.0"
       }
@@ -1003,7 +1027,7 @@
     "math-interval-parser": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-2.0.1.tgz",
-      "integrity": "sha512-VmlAmb0UJwlvMyx8iPhXUDnVW1F9IrGEd9CIOmv+XL8AErCUUuozoDMrgImvnYt2A+53qVX/tPW6YJurMKYsvA=="
+      "integrity": "sha1-4izW0VoKf0wDrsVg23ZRPaYVvtQ="
     },
     "media-typer": {
       "version": "0.3.0",
@@ -1018,7 +1042,7 @@
     "messageformat": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/messageformat/-/messageformat-2.3.0.tgz",
-      "integrity": "sha512-uTzvsv0lTeQxYI2y1NPa1lItL5VRI8Gb93Y2K2ue5gBPyrbJxfDi/EYWxh2PKv5yO42AJeeqblS9MJSh/IEk4w==",
+      "integrity": "sha1-3iY8SQKdXq5l1+4l4HVPV/QlrZE=",
       "requires": {
         "make-plural": "^4.3.0",
         "messageformat-formatters": "^2.0.1",
@@ -1028,7 +1052,7 @@
         "make-plural": {
           "version": "4.3.0",
           "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-4.3.0.tgz",
-          "integrity": "sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA==",
+          "integrity": "sha1-8j3gjv2wysLgybqfMVsN/2tMJzU=",
           "requires": {
             "minimist": "^1.2.0"
           }
@@ -1038,12 +1062,12 @@
     "messageformat-formatters": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/messageformat-formatters/-/messageformat-formatters-2.0.1.tgz",
-      "integrity": "sha512-E/lQRXhtHwGuiQjI7qxkLp8AHbMD5r2217XNe/SREbBlSawe0lOqsFb7rflZJmlQFSULNLIqlcjjsCPlB3m3Mg=="
+      "integrity": "sha1-BJLBQCpId191HJsXwDVOkr4BKwg="
     },
     "messageformat-parser": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-4.1.2.tgz",
-      "integrity": "sha512-7dWuifeyldz7vhEuL96Kwq1fhZXBW+TUfbnHN4UCrCxoXQTYjHnR78eI66Gk9LaLLsAvzPNVJBaa66DRfFNaiA=="
+      "integrity": "sha1-/TTsOZEqFIaKFZXq63QkhauKs3I="
     },
     "methods": {
       "version": "1.1.2",
@@ -1053,7 +1077,7 @@
     "mime": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+      "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE="
     },
     "mime-db": {
       "version": "1.40.0",
@@ -1071,7 +1095,7 @@
     "minimatch": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
       "requires": {
         "brace-expansion": "^1.1.7"
       }
@@ -1084,7 +1108,7 @@
     "morgan": {
       "version": "1.9.1",
       "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
-      "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
+      "integrity": "sha1-Co0Wc0odmvvIJLmd+H5zjlji2lk=",
       "requires": {
         "basic-auth": "~2.0.0",
         "debug": "2.6.9",
@@ -1117,12 +1141,12 @@
     "negotiator": {
       "version": "0.6.2",
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+      "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
     },
     "node-forge": {
       "version": "0.7.6",
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz",
-      "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw=="
+      "integrity": "sha1-/fO0GK7h+U8O9kLNY0hsd8qXJKw="
     },
     "nodemailer": {
       "version": "6.3.1",
@@ -1149,7 +1173,7 @@
         "debug": {
           "version": "3.2.6",
           "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
           "requires": {
             "ms": "^2.1.1"
           }
@@ -1167,7 +1191,7 @@
     "normalize-path": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+      "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU="
     },
     "npm-run-path": {
       "version": "2.0.2",
@@ -1212,7 +1236,7 @@
     "on-headers": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+      "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8="
     },
     "p-finally": {
       "version": "1.0.0",
@@ -1233,7 +1257,7 @@
     "parseurl": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+      "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ="
     },
     "passport": {
       "version": "0.3.2",
@@ -1262,7 +1286,7 @@
         "debug": {
           "version": "3.2.6",
           "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
           "requires": {
             "ms": "^2.1.1"
           }
@@ -1287,7 +1311,7 @@
     "path-parse": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+      "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw="
     },
     "path-to-regexp": {
       "version": "0.1.7",
@@ -1317,7 +1341,7 @@
     "process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
     },
     "proxy-addr": {
       "version": "2.0.5",
@@ -1336,12 +1360,12 @@
     "pstree.remy": {
       "version": "1.1.7",
       "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz",
-      "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A=="
+      "integrity": "sha1-x2ljooBH7WFULcNhqibuVaf6FfM="
     },
     "pug": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz",
-      "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==",
+      "integrity": "sha1-7naC7ApgSUs41IqI8F87CskxN30=",
       "requires": {
         "pug-code-gen": "^2.0.2",
         "pug-filters": "^3.1.1",
@@ -1356,7 +1380,7 @@
     "pug-attrs": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz",
-      "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==",
+      "integrity": "sha1-svRMQ55OtK1dTvJcrCDRitKMwzY=",
       "requires": {
         "constantinople": "^3.0.1",
         "js-stringify": "^1.0.1",
@@ -1366,7 +1390,7 @@
     "pug-code-gen": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz",
-      "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==",
+      "integrity": "sha1-rQlnFirqB33PeHg42U7RSssCF8I=",
       "requires": {
         "constantinople": "^3.1.2",
         "doctypes": "^1.1.0",
@@ -1423,12 +1447,12 @@
     "pug-error": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz",
-      "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ=="
+      "integrity": "sha1-80L7AIdS1YA0wYXeA2At2f/hX6Y="
     },
     "pug-filters": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz",
-      "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==",
+      "integrity": "sha1-qyzILbnuzPV4vaiRMOJSoNsCaqc=",
       "requires": {
         "clean-css": "^4.1.11",
         "constantinople": "^3.0.1",
@@ -1479,7 +1503,7 @@
     "pug-lexer": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz",
-      "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==",
+      "integrity": "sha1-UxzeSMfAsfy7wrhUhchmXjFInP0=",
       "requires": {
         "character-parser": "^2.1.1",
         "is-expression": "^3.0.0",
@@ -1499,7 +1523,7 @@
     "pug-linker": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz",
-      "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==",
+      "integrity": "sha1-9b8hiw79Zc5mcPevxRZY0Pgpifs=",
       "requires": {
         "pug-error": "^1.3.3",
         "pug-walk": "^1.1.8"
@@ -1508,7 +1532,7 @@
     "pug-load": {
       "version": "2.0.12",
       "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz",
-      "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==",
+      "integrity": "sha1-04yF64X24vcE3qFNzKlBRNNdPns=",
       "requires": {
         "object-assign": "^4.1.0",
         "pug-walk": "^1.1.8"
@@ -1517,7 +1541,7 @@
     "pug-parser": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz",
-      "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==",
+      "integrity": "sha1-A+etpItoQL04Ivhn19kPhC0P/ck=",
       "requires": {
         "pug-error": "^1.3.3",
         "token-stream": "0.0.1"
@@ -1526,12 +1550,12 @@
     "pug-runtime": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz",
-      "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw=="
+      "integrity": "sha1-baeXbDa/IvaOczw1kkDYrnoylTo="
     },
     "pug-strip-comments": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz",
-      "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==",
+      "integrity": "sha1-zBtt4fbo9ZMc8C7GbN/9P1Dq+Kg=",
       "requires": {
         "pug-error": "^1.3.3"
       }
@@ -1539,7 +1563,7 @@
     "pug-walk": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz",
-      "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA=="
+      "integrity": "sha1-tAj2fyeRL4wh2i9FtyMMS9Kl6no="
     },
     "q": {
       "version": "1.5.1",
@@ -1549,7 +1573,7 @@
     "qs": {
       "version": "6.7.0",
       "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+      "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw="
     },
     "random-bytes": {
       "version": "1.0.0",
@@ -1559,12 +1583,12 @@
     "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=="
+      "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE="
     },
     "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==",
+      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
       "requires": {
         "bytes": "3.1.0",
         "http-errors": "1.7.2",
@@ -1575,7 +1599,7 @@
     "rc": {
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=",
       "requires": {
         "deep-extend": "^0.6.0",
         "ini": "~1.3.0",
@@ -1615,12 +1639,12 @@
     "regenerator-runtime": {
       "version": "0.11.1",
       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+      "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
     },
     "registry-auth-token": {
       "version": "3.4.0",
       "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
-      "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
+      "integrity": "sha1-10RoFUM/XV7WQxzV3KIQSPZrOX4=",
       "requires": {
         "rc": "^1.1.6",
         "safe-buffer": "^5.0.1"
@@ -1658,22 +1682,22 @@
     "safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
     },
     "safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
     },
     "sax": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
     },
     "semver": {
       "version": "5.7.1",
       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc="
     },
     "semver-diff": {
       "version": "2.1.0",
@@ -1686,7 +1710,7 @@
     "send": {
       "version": "0.17.1",
       "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
       "requires": {
         "debug": "2.6.9",
         "depd": "~1.1.2",
@@ -1706,14 +1730,14 @@
         "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=="
+          "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
         }
       }
     },
     "serve-static": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
       "requires": {
         "encodeurl": "~1.0.2",
         "escape-html": "~1.0.3",
@@ -1724,7 +1748,7 @@
     "setprototypeof": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
     },
     "shebang-command": {
       "version": "1.2.0",
@@ -1747,7 +1771,7 @@
     "sprintf-js": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
-      "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
+      "integrity": "sha1-2hdlJiv4wPVxdJ8q1sJjACB65nM="
     },
     "sqlstring": {
       "version": "2.3.1",
@@ -1759,10 +1783,15 @@
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
     },
+    "streamsearch": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+      "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
+    },
     "string-width": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
       "requires": {
         "is-fullwidth-code-point": "^2.0.0",
         "strip-ansi": "^4.0.0"
@@ -1789,7 +1818,7 @@
     "string_decoder": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
       "requires": {
         "safe-buffer": "~5.1.0"
       }
@@ -1815,7 +1844,7 @@
     "supports-color": {
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
       "requires": {
         "has-flag": "^3.0.0"
       }
@@ -1841,7 +1870,7 @@
     "to-regex-range": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
       "requires": {
         "is-number": "^7.0.0"
       }
@@ -1849,7 +1878,7 @@
     "toidentifier": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
     },
     "token-stream": {
       "version": "0.0.1",
@@ -1859,7 +1888,7 @@
     "touch": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
-      "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+      "integrity": "sha1-/jZfX3XsntTlaCXgu3bSSrdK+Ds=",
       "requires": {
         "nopt": "~1.0.10"
       }
@@ -1867,7 +1896,7 @@
     "type-is": {
       "version": "1.6.18",
       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
       "requires": {
         "media-typer": "0.3.0",
         "mime-types": "~2.1.24"
@@ -1899,7 +1928,7 @@
     "uid-safe": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
-      "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+      "integrity": "sha1-Kz1cckDo/C5Y+Komnl7knAhXvTo=",
       "requires": {
         "random-bytes": "~1.0.0"
       }
@@ -1933,7 +1962,7 @@
     "update-notifier": {
       "version": "2.5.0",
       "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
-      "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+      "integrity": "sha1-0HRFk+E/Fh5AassdlAi3LK0Ir/Y=",
       "requires": {
         "boxen": "^1.2.1",
         "chalk": "^2.0.1",
@@ -1987,7 +2016,7 @@
     "which": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
       "requires": {
         "isexe": "^2.0.0"
       }
@@ -1995,7 +2024,7 @@
     "widest-line": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
-      "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+      "integrity": "sha1-dDh2RzDsfvQ4HOTfgvuYpTFCo/w=",
       "requires": {
         "string-width": "^2.1.1"
       }
@@ -2008,7 +2037,7 @@
     "write-file-atomic": {
       "version": "2.4.3",
       "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
-      "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+      "integrity": "sha1-H9Lprh3z51uNjDZ0Q8aS1MqB9IE=",
       "requires": {
         "graceful-fs": "^4.1.11",
         "imurmurhash": "^0.1.4",
@@ -2023,7 +2052,7 @@
     "xml-crypto": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-1.4.0.tgz",
-      "integrity": "sha512-K8FRdRxICVulK4WhiTUcJrRyAIJFPVOqxfurA3x/JlmXBTxy+SkEENF6GeRt7p/rB6WSOUS9g0gXNQw5n+407g==",
+      "integrity": "sha1-3hzsjNMcvWic2Q09boon1K6Afec=",
       "requires": {
         "xmldom": "0.1.27",
         "xpath": "0.0.27"
@@ -2064,7 +2093,7 @@
     "xmlbuilder": {
       "version": "11.0.1",
       "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
-      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+      "integrity": "sha1-vpuuHIoEbnazESdyY0fQrXACvrM="
     },
     "xmldom": {
       "version": "0.1.27",
@@ -2074,7 +2103,7 @@
     "xpath": {
       "version": "0.0.27",
       "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz",
-      "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ=="
+      "integrity": "sha1-3TQh+9zFZGrDLEhTG01+nQws+pI="
     },
     "yallist": {
       "version": "2.1.2",
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index 222e30ca..b929c71b 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -41,7 +41,6 @@ html(lang="de")
     // jQuery
     
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
-    script(src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
@@ -50,4 +49,4 @@ html(lang="de")
         script(src="/js/headfootLogout.js")
     else
         script(src="/js/headfoot.js")
-        
\ No newline at end of file
+        
-- 
GitLab


From ecbd2d617ff333dad97fe14ac21fab04e7a7de3b Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Thu, 9 Apr 2020 08:22:20 +0000
Subject: [PATCH 12/19] Update config.js: idp metadata issuer updated

---
 config/config.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/config/config.js b/config/config.js
index b1345231..b4c47761 100644
--- a/config/config.js
+++ b/config/config.js
@@ -9,8 +9,8 @@ module.exports = {
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
         entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
-        //issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
+        //issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
+        issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
         //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
         logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
       }
-- 
GitLab


From bf3d6b22f93d8b93530eb0753248eff64c17a728 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Thu, 9 Apr 2020 11:56:18 +0200
Subject: [PATCH 13/19] account home page text, links menu adapted

---
 views/DE/account/home.pug     | 10 ++++++----
 views/DE/account/profile.pug  |  4 ++--
 views/DE/account/security.pug |  4 ++--
 views/DE/account/services.pug |  4 ++--
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 5a19d9bc..94083989 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -34,12 +34,14 @@ html(lang="de")
                 h5
                     span #{user.firstname} #{user.lastname}
                 div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
-                    a(class="nav-link" href="/profile" aria-selected="true") Benutzerprofil
-                    a(class="nav-link" href="/security" aria-selected="false") Sicherheitseinstellungen
-                    a(class="nav-link" href="/services" aria-selected="false") Projekte und Dienste
+                    a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
+                    a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
+                    a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
                     a(class="nav-link" href="/logout" aria-selected="false") Logout
             div(class="col-sm-9")
-                p content goes here
+                p Willkommen im Benutzerkonto-Bereich des HFT Transferportals
+                p In diesem Bereich können Sie Ihr Benutzerkonto pflegen.<br/> Dazu finden Sie auf der linken Seite verschiedene Menüs.
+                p Bei Rückfragen kontaktieren Sie uns bitte unter: <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
                 
     // jQuery
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index 999fc3c7..6b95d531 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -35,8 +35,8 @@ html(lang="de")
                     span #{user.firstname} #{user.lastname}
                 div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
                     a(class="nav-link" href="#" aria-selected="true") Benutzerprofil
-                    a(class="nav-link" href="/security" aria-selected="false") Sicherheitseinstellungen
-                    a(class="nav-link" href="/services" aria-selected="false") Projekte und Dienste
+                    a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
+                    a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
                     a(class="nav-link" href="/logout" aria-selected="false") Logout
             div(class="col-sm-9")
                 if successes
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index fde244aa..135d091f 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -37,9 +37,9 @@ html(lang="de")
                 h5
                     span #{user.firstName} #{user.lastName}
                 div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
-                    a(class="nav-link" href="/profile" aria-selected="true") Benutzerprofil
+                    a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
                     a(class="nav-link" href="#" aria-selected="false") Sicherheitseinstellungen
-                    a(class="nav-link" href="/services" aria-selected="false") Projekte und Dienste
+                    a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
                     a(class="nav-link" href="/logout" aria-selected="false") Logout
             div(class="col-sm-9")
                 if successes
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 38d109d0..525041ef 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -34,8 +34,8 @@ html(lang="de")
                 h5
                     span #{user.firstName} #{user.lastName}
                 div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
-                    a(class="nav-link" href="/profile" aria-selected="true") Benutzerprofil
-                    a(class="nav-link" href="/security" aria-selected="false") Sicherheitseinstellungen
+                    a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
+                    a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
                     a(class="nav-link" href="#" aria-selected="false") Projekte und Dienste
                     a(class="nav-link" href="/logout" aria-selected="false") Logout
             div(class="col-sm-9")
-- 
GitLab


From b73327bcdaacd06c62aad0acbf41593d3503070c Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Thu, 9 Apr 2020 15:32:21 +0200
Subject: [PATCH 14/19] added new mailinglists page

---
 routes/routes-project.js          |  3 +-
 views/DE/project/mailinglists.pug | 89 +++++++++++++++++++++----------
 2 files changed, 64 insertions(+), 28 deletions(-)

diff --git a/routes/routes-project.js b/routes/routes-project.js
index 00b2e056..d34bab48 100644
--- a/routes/routes-project.js
+++ b/routes/routes-project.js
@@ -28,7 +28,8 @@ module.exports = function (app) {
                     name: mailinglistOverview[i].name,
                     src: mailinglistOverview[i].src,
                     projectstatus: mailinglistOverview[i].projectstatus,
-                    project_title: mailinglistOverview[i].project_title
+                    project_title: mailinglistOverview[i].project_title,
+                    keywords: mailinglistOverview[i].keywords
                 });
             }
 
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index 1bc8f5c2..58acfb24 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -2,9 +2,11 @@ html(lang="de")
   head
     title= "Mailinglisten"
     meta(charset="UTF-8")
-    meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
+    meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
+    link(rel="stylesheet" href="/fonts/ionicons.min.css")
+    link(rel="stylesheet" href="assets/css/Testimonials.css")
     style.
         .collapse {
             display: none;
@@ -27,35 +29,68 @@ html(lang="de")
             transition-property: height,visibility;
         }
   body
-    <hr />
-    div()
-        h5(align="left") Aktive Mailinglisten
-        div(class="flex-container" style="align-items:flex-start")
-            div(class="table")
-                table(border="0" id="listtable" class="table table-striped")
-                    thead
-                        tr
-                            th Name
-                            th Link
-                            th zugeh. Projekt
-                    tbody
-                        for item in mailinglists
-                            if item.projectstatus == '1'
-                                tr
-                                    td #{item.name}
-                                    td <a href="#{item.src}">#{item.src}</a>
-                                    td <a href='projectoverview?projectID=#{item.id}'>#{item.project_title}</a>
-    <hr />
-    div()
-        h5(align="left") Eintragung in Mailingliste
-        p() Wenn Sie sich in eine Mailingliste eintragen wollen, folgen Sie folgender Anleitung:
+    div(class="container")
+        div(class="row")
+            div(class="col-md-12" style="margin-bottom: 40px;")
+                img(class="mx-auto" src="/img/Mailinglisten.jpg" width="100%")
+    div(class="container")
+        div(class="row")
+            div(class="col-md-12" style="margin-bottom: 30px;")
+                h4(class="text-center") Durch Mailinglisten können Sie interessierten Personen<br/> <strong>regelmäßig Informationen</strong> zu Ihrem Projekt oder Thema zukommen lassen.<br/> Ebenso können Sie über ein Abonnement in einer Mailingliste Mitglied des Verteilers<br/>werden und so <strong>im Austausch</strong> bleiben. <br/>
+            div(class="col-md-12" style="margin-bottom: 30px;")
+                h2(class="text-center" style="color: #8a348b;") <strong>Aktive Mailinglisten</strong>
+                div(class="table-responsive table-borderless")
+                    table(class="table table-striped table-bordered table-hover")
+                        thead()
+                            tr()
+                                th Name
+                                th Link
+                                th Projekte
+                                th Keywords
+                        tbody()
+                            for item in mailinglists
+                                if item.projectstatus == '1'
+                                    tr
+                                        td #{item.name}
+                                        td <a href="#{item.src}">#{item.src}</a>
+                                        td <a href='projectoverview?projectID=#{item.id}'>#{item.project_title}</a>
+                                        td #{item.keywords}
+    div(id="aboText" style="background-color: #dadada;margin-top: 40px;")
+        div(class="container")
+            div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
+                div(class="col-lg-12" style="background-color: #ffffff;")
+                    h2(class="text-center" style="color: #8a348b;margin-top: 15px;") <strong> Mailingliste abonnieren </strong>
+                div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
+                    p() Das Deutsche Forschungsnetz (DFN) bietet Mailinglisten für Wissenschaft und Forschung an. Mailinglisten sind E-Mail-Verteilerlisten, d.h. Personen, die sich für Ihr Forschungsthema interessieren, können sich über das DFN registrieren und erhalten im Anschluss daran regelmäßig die über die Mailinglisten geteilten Informationen.
+                    p() Sie als Verteiler senden die zu versendende Mail folglich nur noch an die festgelegte Mailinglistenadresse und das Programm leitet die Nachricht an alle registrierten Personen weiter.
+                div(class="col-md-4 col-lg-6 justify-content-between flex-wrap" style="background-color: #ffffff;")
+                    div(class="justify-content-between order-2" style="background-color: rgba(255,255,255,0);")
+                        p(class="text-left d-flex d-md-flex flex-row flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-start align-content-start align-self-start flex-wrap order-1 justify-content-md-center align-items-md-start justify-content-lg-start") Oben finden Sie eine Übersicht über die aktiven Mailinglisten. Wenn Sie sich in eine Mailingliste eintragen wollen, dann klicken Sie auf den entsprechend hinterlegten Link.
+                        p() Es öffnet sich daraufhin die Hauptseite der Liste. Nach der Auswahl des Buttons „Abonnieren“, können Sie Ihre Mailadresse hinterlegen und sich in die Liste eintragen.
+                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 mb-auto justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #8a348b;" href="https://www.listserv.dfn.de/sympa/help") <strong>Dokumentation bei DFN</strong>
+                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #8a348b; margin-top:10px; margin-bottom:10px;" href="/downloads/Handout_Mailinglisten_Abonnieren.pdf") <strong>Erste Schritte</strong>
+    div(id="newListText" style="background-color: #dadada;margin-top: 0px;")
+        div(class="container")
+            div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
+                div(class="col-lg-12" style="background-color: #ffffff;")
+                    h2(class="text-center" style="color: #8a348b;margin-top: 15px;") <strong>Neue Mailingliste erstellen</strong>
+                div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
+                    p() Über das Transferportal können Sie selbst eine Liste zu Ihrem Projekt anlegen, um mit Ihren Partnern in Verbindung zu bleiben.
+                    p() Folgen Sie hierzu der Anleitung des DFN.
+                div(class="col-md-4 col-lg-6" style="background-color: #ffffff;")
+                    a(class="btn btn-primary text-center d-lg-flex justify-content-center align-items-center align-content-center align-self-center align-items-lg-end mx-auto" role="button" style="background-color: #8a348b;" href="https://www.listserv.dfn.de/sympa/help/admin") <strong>Tutorial bei DFN</strong>
+                    a(class="btn btn-primary text-center d-inline-flex d-lg-flex flex-column flex-grow-1 flex-shrink-1 flex-fill justify-content-between align-items-baseline align-content-center align-self-baseline flex-wrap order-3 justify-content-md-center align-items-md-end align-items-lg-center justify-content-xl-center mx-auto" role="button" style="background-color: #8a348b; margin-top:10px; margin-top:10px;" href="/downloads/Handout_Mailinglisten_Erstellen.pdf") <strong>Erste Schritte</strong>
+    div(id="addListText" style="background-color: #dadada;margin-top: 0px;")
+        div(class="container")
+            div(class="row" style="margin-bottom: 0;padding-top: 20px;padding-bottom: 20px;")
+                div(class="col-lg-12" style="background-color: #ffffff;")
+                    h2(class="text-center" style="color: #8a348b;margin-top: 15px;") <strong>Neue Mailingliste eintragen</strong>
+                div(class="col-xl" style="background-color: #ffffff;")
+                    p() Um Ihre beim DFN angelegte Mailingliste hier aufzunehmen, schicken Sie uns bitte eine Email an <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
     // jQuery
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="/js/headfootLogout.js")
-- 
GitLab


From 3ce7cab487bfa00fd2879182eb295d7125d46be7 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Thu, 9 Apr 2020 15:36:01 +0200
Subject: [PATCH 15/19] adapted projectlist heading sizes

---
 views/DE/project/project.html | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/views/DE/project/project.html b/views/DE/project/project.html
index ac3137df..797287b5 100644
--- a/views/DE/project/project.html
+++ b/views/DE/project/project.html
@@ -12,24 +12,24 @@
 
 
     <!-- link: Gitlab Projekte / Gitlab project list -->
-    <h2> Direkteinstieg </h2>
+    <h4> Direkteinstieg </h4>
     <a href="https://transfer.hft-stuttgart.de/gitlab/explore/projects"> <i class="fas fa-chevron-right">Gitlab
             Projects</i></a>
 
     <!-- text: Hilfestellung zu Gitlab / short help about Gitlab -->
     <hr />
     
-    <h2>Hilfestellung zu GitLab</h2>
+    <h4>Hilfestellung zu GitLab</h4>
 
     <br />
     
     <div class="help">
         <div class="card">
             <div class="card-header">
-                <h3 class="card-title">
+                <h6 class="card-title">
                     <a class="collapsed" data-toggle="collapse" href="#collapse1" aria-expanded="false" aria-controls="collapse1">
                         Möchten Sie die Projektinhalte ansehen oder herunterladen?</a>
-                </h3>
+                </h6>
             </div>
             <div id="collapse1" class="card-body collapse">
                 <p>
@@ -45,10 +45,10 @@
         
         <div class="card">
             <div class="card-header">
-                <h3 class="card-title">
+                <h6 class="card-title">
                     <a class="collapsed" data-toggle="collapse" href="#collapse2" aria-expanded="false" aria-controls="collapse2">
                         Möchten Sie zu einem Projekt beitragen?</a>
-                </h3>
+                </h6>
             </div>
             <div id="collapse2" class="card-body collapse">
                 <p>
@@ -86,10 +86,10 @@
 
         <div class="card">
             <div class="card-header">
-                <h3 class="card-title">
+                <h6 class="card-title">
                     <a class="collapsed" data-toggle="collapse" href="#collapse3" aria-expanded="false" aria-controls="collapse3">
                         Möchten Sie selbst ein Projekt anlegen, um es der Öffentlichkeit bereitzustellen?</a>
-                </h3>
+                </h6>
             </div>
             <div id="collapse3" class="card-body collapse">
                 <p>
-- 
GitLab


From 1c85424af54baed68ecfbb2f06854ca08cd4c598 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Thu, 9 Apr 2020 14:20:21 +0000
Subject: [PATCH 16/19] removed all occurendes of headfootLogout.js

---
 views/DE/account/home.pug               | 2 +-
 views/DE/account/profile.pug            | 2 +-
 views/DE/account/security.pug           | 2 +-
 views/DE/account/services.pug           | 2 +-
 views/DE/project/addProjectOverview.pug | 2 +-
 views/DE/project/mailinglists.pug       | 2 +-
 views/DE/project/project-simplified.pug | 5 +----
 views/DE/project/projectOverview.pug    | 5 +----
 views/DE/project/projects.pug           | 5 +----
 views/DE/project/videoconferences.pug   | 5 +----
 10 files changed, 10 insertions(+), 22 deletions(-)

diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 94083989..de3ed363 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -49,4 +49,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfootLogout.js")
\ No newline at end of file
+    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index 6b95d531..2b55c8cf 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -105,4 +105,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfootLogout.js")
\ No newline at end of file
+    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 135d091f..29d0b43d 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -75,7 +75,7 @@ html(lang="de")
     // M4_LAB
     script(src="/js/security.js")
     script(src="/js/generalFunction.js")
-    script(src="/js/headfootLogout.js")
+    script(src="/js/headfoot.js")
     script.
         // check input fields
         'use strict';
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 525041ef..d1b8344d 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -68,7 +68,7 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfootLogout.js")
+    script(src="/js/headfoot.js")
     script.
         function subscribe() {
             alert("To be implemented: Ihre Anfrage wird an den zuständigen Projektleiter gesendet.")
diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index 9ed2c76e..f6517d29 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -134,7 +134,7 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    script(src="/js/headfootLogout.js")
+    script(src="/js/headfoot.js")
     script.
         $( function() {
             $.datepicker.setDefaults( $.datepicker.regional["de"] );
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index 58acfb24..1c2cf2e8 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -93,4 +93,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    script(src="/js/headfootLogout.js")
+    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index b929c71b..206e5881 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -45,8 +45,5 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="/js/headfoot.js")
+    script(src="/js/headfoot.js")
         
diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index 7cf545fb..539a60e5 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -162,7 +162,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index 78a12ecf..c2730b80 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -111,7 +111,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index 12fc17a9..e6ee7b69 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -64,7 +64,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // Header
-    if isUserAuthenticated
-        script(src="/js/headfootLogout.js")
-    else
-        script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="/js/headfoot.js")
\ No newline at end of file
-- 
GitLab


From db07c1dcf07329a0c17451579c556aa632cc2025 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Fri, 17 Apr 2020 13:57:58 +0000
Subject: [PATCH 17/19] changed default SAML-redirect to account page

---
 routes/routes-account.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index 8c0b3129..d43845fc 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -58,11 +58,11 @@ module.exports = function (app, config, passport, i18n) {
   app.post(config.passport.saml.path,
     passport.authenticate(config.passport.strategy,
       {
-        failureRedirect: '/',
+        failureRedirect: '/account/',
         failureFlash: true
       }),
     function (req, res) {
-      res.redirect('/');
+      res.redirect('/account/');
     }
   );
 
-- 
GitLab


From 885546b6f69e3236e784ee25e3574e9767dbf7af Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 24 Apr 2020 17:07:07 +0200
Subject: [PATCH 18/19] MLAB-175

---
 views/DE/account/profile.pug | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index 2b55c8cf..e30882ef 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -77,26 +77,26 @@ html(lang="de")
                                     }
                         div(class='form-group col-md-2')
                             label(for="firstname") Vorname
-                            input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname", value=user.firstname required)
+                            input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname", value=user.firstname, maxlength="45" required)
                         div(class='form-group col-md-2')
                             label(for="lastname") Nachname
-                            input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname", value=user.lastname required)
+                            input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname", value=user.lastname, maxlength="45" required)
                     div(class="form-row")
                         div(class='form-group col-md-8')
                             label(for="email") E-mail Adresse
-                            input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email", value=email required)
+                            input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email", value=email, maxlength="45" required)
                     div(class="form-row")
                         div(class='form-group col-md-8')
                             label(for="organisation") Unternehmen
-                            input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", value=user.organisation)
+                            input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", value=user.organisation, maxlength="45")
                     div(class="form-row")
                         div(class='form-group col-md-8')
                             label(for="industry") Branche
-                            input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", value=user.industry)
+                            input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", value=user.industry, maxlength="45")
                     div(class="form-row")
                         div(class='form-group col-md-8')
                             label(for="speciality") Fachgebiete
-                            input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", value=user.speciality)                    
+                            input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", value=user.speciality, maxlength="100")                    
                     input(type="submit", class="btn btn-primary", value="Speichern")
 
     // jQuery
-- 
GitLab


From 34e30b09a312beb0c4c128a3ff5c135285b94172 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 24 Apr 2020 17:28:16 +0200
Subject: [PATCH 19/19] MLAB-170

---
 public/js/registration.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/public/js/registration.js b/public/js/registration.js
index 3e6184f9..8f2c1b54 100644
--- a/public/js/registration.js
+++ b/public/js/registration.js
@@ -8,7 +8,7 @@ $('#inputEmail').change(function(){
         $('#emailWarning').empty()
         isEmailValid = data
         if(!isEmailValid) {
-            $('#emailWarning').html('M4_LAB account with this email address is already exist.')
+            $('#emailWarning').html('Mit dieser E-Mail-Adresse existiert bereits ein Benutzerkonto in unserem Transferportal.')
         }
         switchSubmitButton()
     })
-- 
GitLab