From 00a30911ee6f46ce8f998e7ba4f36b57ab2c50b5 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Thu, 23 May 2019 09:33:17 +0200
Subject: [PATCH 01/18] Ajout configuration "build" dans package.json

---
 main.js           |   60 ++
 package-lock.json | 1457 +++++++++++++++++++++++++++++++++++++++++++--
 package.json      |   25 +
 3 files changed, 1498 insertions(+), 44 deletions(-)
 create mode 100644 main.js

diff --git a/main.js b/main.js
new file mode 100644
index 000000000..42e68e906
--- /dev/null
+++ b/main.js
@@ -0,0 +1,60 @@
+const { app, dialog, BrowserWindow } = require('electron');
+
+let win;
+function createWindow () {
+    // Create the browser window.
+    win = new BrowserWindow({ width: 800, height: 600 });
+
+    // and load the index.html of the app. 
+    win.loadFile("./dist/index.html");
+
+    // Hide menu bar.
+    win.setMenuBarVisibility(false)
+
+    // Open the DevTools.
+    // win.webContents.openDevTools();
+
+    // Close the app.
+    win.on('close', () => {
+        // @TODO does not render properly on Linux
+        /* var choice = dialog.showMessageBox(this,
+            {
+              type: 'question',
+              buttons: ['Yes', 'No'],
+              title: 'Confirm',
+              message: 'Are you sure you want to quit?'
+           }
+        );
+        if(choice == 1){
+            e.preventDefault();
+        } */
+        win.destroy();
+    });
+
+    // Emitted when the window is closed.
+    win.on('closed', () => {
+        win = null;
+    })
+};
+
+// This method will be called when Electron has finished
+// initialization and is ready to create browser windows.
+// Some APIs can only be used after this event occurs.
+app.on('ready', createWindow);
+
+// Quit when all windows are closed.
+app.on('window-all-closed', () => {
+    // On macOS it is common for applications and their menu bar
+    // to stay active until the user quits explicitly with Cmd + Q
+    if (process.platform !== 'darwin') {
+        app.quit();
+    }
+});
+
+app.on('activate', () => {
+    // On macOS it's common to re-create a window in the app when the
+    // dock icon is clicked and there are no other windows open.
+    if (win === null) {
+        createWindow()
+    }
+});
diff --git a/package-lock.json b/package-lock.json
index f828b90e1..f0b5b1327 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,6 +4,12 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "7zip-bin": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz",
+      "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==",
+      "dev": true
+    },
     "@angular-devkit/architect": {
       "version": "0.13.8",
       "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.8.tgz",
@@ -1919,6 +1925,48 @@
         "chart.js": "^2.3.0"
       }
     },
+    "ansi-align": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+      "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+      "dev": true,
+      "requires": {
+        "string-width": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
     "ansi-colors": {
       "version": "3.2.3",
       "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
@@ -2009,6 +2057,73 @@
       "integrity": "sha1-7klza2ObTxCLbp5ibG2pkwa0FpI=",
       "dev": true
     },
+    "app-builder-bin": {
+      "version": "2.6.6",
+      "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.6.tgz",
+      "integrity": "sha512-G0Ee6xkbxV+fvM/7xXWIgSDjWAD4E/d/aNbxerq/TVsCyBIau/0VPmrEqBMyZv0NbTwLDW5aF/yHG+0ZEY77kA==",
+      "dev": true
+    },
+    "app-builder-lib": {
+      "version": "20.40.2",
+      "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.40.2.tgz",
+      "integrity": "sha512-SAbfua8+L3pFbQp3QFpKV0PzHJPJqepROeX/FPrfdL02zxlw+BVOe6KfC3+UV6XUombWvVPG+SwG956vfIx/Cw==",
+      "dev": true,
+      "requires": {
+        "7zip-bin": "~4.1.0",
+        "app-builder-bin": "2.6.6",
+        "async-exit-hook": "^2.0.1",
+        "bluebird-lst": "^1.0.7",
+        "builder-util": "9.7.1",
+        "builder-util-runtime": "8.2.1",
+        "chromium-pickle-js": "^0.2.0",
+        "debug": "^4.1.1",
+        "ejs": "^2.6.1",
+        "electron-osx-sign": "0.4.11",
+        "electron-publish": "20.40.0",
+        "fs-extra-p": "^7.0.1",
+        "hosted-git-info": "^2.7.1",
+        "is-ci": "^2.0.0",
+        "isbinaryfile": "^4.0.0",
+        "js-yaml": "^3.13.0",
+        "lazy-val": "^1.0.4",
+        "minimatch": "^3.0.4",
+        "normalize-package-data": "^2.5.0",
+        "plist": "^3.0.1",
+        "read-config-file": "3.2.2",
+        "sanitize-filename": "^1.6.1",
+        "semver": "^6.0.0",
+        "temp-file": "^3.3.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "isbinaryfile": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.0.tgz",
+          "integrity": "sha512-RBtmso6l2mCaEsUvXngMTIjg3oheXo0MgYzzfT6sk44RYggPnm9fT+cQJAmzRnJIxPHXg9FZglqDJGW28dvcqA==",
+          "dev": true
+        },
+        "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==",
+          "dev": true
+        },
+        "semver": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
+          "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==",
+          "dev": true
+        }
+      }
+    },
     "app-root-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz",
@@ -2078,8 +2193,7 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
       "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "array-flatten": {
       "version": "2.1.2",
@@ -2262,6 +2376,12 @@
       "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
       "dev": true
     },
+    "async-exit-hook": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+      "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
+      "dev": true
+    },
     "async-foreach": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
@@ -2636,6 +2756,23 @@
       "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==",
       "dev": true
     },
+    "bluebird-lst": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.8.tgz",
+      "integrity": "sha512-InUDOaBaIjIobOa3O4YRAbFgff907uTJZXW0m0rhk3zhVZ4GvsmdCLEAKC1CTWTtUWCM8iWTTfFX9N/xQR/etw==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.4"
+      },
+      "dependencies": {
+        "bluebird": {
+          "version": "3.5.4",
+          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz",
+          "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==",
+          "dev": true
+        }
+      }
+    },
     "bn.js": {
       "version": "4.11.8",
       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
@@ -2680,6 +2817,60 @@
       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
       "dev": true
     },
+    "boxen": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+      "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+      "dev": true,
+      "requires": {
+        "ansi-align": "^2.0.0",
+        "camelcase": "^4.0.0",
+        "chalk": "^2.0.1",
+        "cli-boxes": "^1.0.0",
+        "string-width": "^2.0.0",
+        "term-size": "^1.2.0",
+        "widest-line": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2914,6 +3105,94 @@
       "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
       "dev": true
     },
+    "builder-util": {
+      "version": "9.7.1",
+      "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.7.1.tgz",
+      "integrity": "sha512-txpzYIeuHFjrOQWPTJDvhJYisIVGJdSG9ppccE+y7agT0YNhBlVHGnd8+HgFTajYE34xzB5zf1/zxiiDqSKSpA==",
+      "dev": true,
+      "requires": {
+        "7zip-bin": "~4.1.0",
+        "app-builder-bin": "2.6.6",
+        "bluebird-lst": "^1.0.7",
+        "builder-util-runtime": "^8.2.1",
+        "chalk": "^2.4.2",
+        "debug": "^4.1.1",
+        "fs-extra-p": "^7.0.1",
+        "is-ci": "^2.0.0",
+        "js-yaml": "^3.13.0",
+        "source-map-support": "^0.5.11",
+        "stat-mode": "^0.3.0",
+        "temp-file": "^3.3.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "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==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "source-map-support": {
+          "version": "0.5.12",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
+          "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
+          "dev": true,
+          "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+          }
+        }
+      }
+    },
+    "builder-util-runtime": {
+      "version": "8.2.1",
+      "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.1.tgz",
+      "integrity": "sha512-2TkeTcI9bDlK5azRZSJJNxhAgW1DK+JY3jHK0UWPxgJcan4GZSVDNNO3sXntNxrp+JAdPHMF14rzNd/G53lvqw==",
+      "dev": true,
+      "requires": {
+        "bluebird-lst": "^1.0.7",
+        "debug": "^4.1.1",
+        "fs-extra-p": "^7.0.1",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "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==",
+          "dev": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+          "dev": true
+        }
+      }
+    },
     "builtin-modules": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@@ -3016,15 +3295,13 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
       "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "camelcase-keys": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
       "dev": true,
-      "optional": true,
       "requires": {
         "camelcase": "^2.0.0",
         "map-obj": "^1.0.0"
@@ -3042,6 +3319,12 @@
       "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==",
       "dev": true
     },
+    "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==",
+      "dev": true
+    },
     "caseless": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -3174,6 +3457,18 @@
         "tslib": "^1.9.0"
       }
     },
+    "chromium-pickle-js": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
+      "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=",
+      "dev": true
+    },
+    "ci-info": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+      "dev": true
+    },
     "cipher-base": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
@@ -3236,6 +3531,12 @@
         }
       }
     },
+    "cli-boxes": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+      "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+      "dev": true
+    },
     "cli-cursor": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@@ -3414,6 +3715,12 @@
       "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
       "dev": true
     },
+    "compare-version": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+      "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
+      "dev": true
+    },
     "compare-versions": {
       "version": "3.4.0",
       "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz",
@@ -3488,6 +3795,20 @@
         "typedarray": "^0.0.6"
       }
     },
+    "configstore": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
+      "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+      "dev": true,
+      "requires": {
+        "dot-prop": "^4.1.0",
+        "graceful-fs": "^4.1.2",
+        "make-dir": "^1.0.0",
+        "unique-string": "^1.0.0",
+        "write-file-atomic": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      }
+    },
     "connect": {
       "version": "3.6.6",
       "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
@@ -3684,6 +4005,15 @@
         "elliptic": "^6.0.0"
       }
     },
+    "create-error-class": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+      "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+      "dev": true,
+      "requires": {
+        "capture-stack-trace": "^1.0.0"
+      }
+    },
     "create-hash": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
@@ -3747,6 +4077,12 @@
       "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=",
       "dev": true
     },
+    "crypto-random-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+      "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+      "dev": true
+    },
     "css-parse": {
       "version": "1.7.0",
       "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
@@ -3802,7 +4138,6 @@
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
       "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
       "dev": true,
-      "optional": true,
       "requires": {
         "array-find-index": "^1.0.1"
       }
@@ -3867,6 +4202,12 @@
       "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
       "dev": true
     },
+    "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==",
+      "dev": true
+    },
     "deep-is": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@@ -4130,6 +4471,33 @@
         "path-type": "^3.0.0"
       }
     },
+    "dmg-builder": {
+      "version": "6.6.1",
+      "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.6.1.tgz",
+      "integrity": "sha512-aIbpQG3es+gHTFtsBQE4fmSYVM60yewxJZsN6FhkAmAmNaoO45bEQNJZsRX0YE49+imiSC92mJmFAEP6iKE0Tg==",
+      "dev": true,
+      "requires": {
+        "app-builder-lib": "~20.40.0",
+        "bluebird-lst": "^1.0.7",
+        "builder-util": "~9.7.1",
+        "fs-extra-p": "^7.0.1",
+        "iconv-lite": "^0.4.24",
+        "js-yaml": "^3.13.0",
+        "parse-color": "^1.0.0",
+        "sanitize-filename": "^1.6.1"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.4.24",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        }
+      }
+    },
     "dns-equal": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
@@ -4214,6 +4582,27 @@
       "integrity": "sha1-xzdwGfxOVQeYkosrmv62ar+h8vk=",
       "dev": true
     },
+    "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==",
+      "dev": true,
+      "requires": {
+        "is-obj": "^1.0.0"
+      }
+    },
+    "dotenv": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
+      "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
+      "dev": true
+    },
+    "dotenv-expand": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
+      "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=",
+      "dev": true
+    },
     "duplexer": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
@@ -4229,6 +4618,12 @@
         "readable-stream": "^2.0.2"
       }
     },
+    "duplexer3": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+      "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+      "dev": true
+    },
     "duplexify": {
       "version": "3.7.1",
       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@@ -4257,6 +4652,373 @@
       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
       "dev": true
     },
+    "ejs": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
+      "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
+      "dev": true
+    },
+    "electron": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/electron/-/electron-5.0.1.tgz",
+      "integrity": "sha512-8KksyhAPcpXVeO8ViVGxfZAuf8yEVBCtV0h/lMBD8VFbCQ9icej1K5csCFAGirbZbqOz5IdsBZX9Gpb9n4RCag==",
+      "dev": true,
+      "requires": {
+        "@types/node": "^10.12.18",
+        "electron-download": "^4.1.0",
+        "extract-zip": "^1.0.3"
+      },
+      "dependencies": {
+        "@types/node": {
+          "version": "10.14.7",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.7.tgz",
+          "integrity": "sha512-on4MmIDgHXiuJDELPk1NFaKVUxxCFr37tm8E9yN6rAiF5Pzp/9bBfBHkoexqRiY+hk/Z04EJU9kKEb59YqJ82A==",
+          "dev": true
+        }
+      }
+    },
+    "electron-builder": {
+      "version": "20.40.2",
+      "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.40.2.tgz",
+      "integrity": "sha512-hnnBzyLXna+WpmT4MIoWVdRli43q09yqKOgzPJj0KrOoJZ7TIoY1aYSPvSg8VL5rSuTgdAWGL4rYd9zcq3YXMQ==",
+      "dev": true,
+      "requires": {
+        "app-builder-lib": "20.40.2",
+        "bluebird-lst": "^1.0.7",
+        "builder-util": "9.7.1",
+        "builder-util-runtime": "8.2.1",
+        "chalk": "^2.4.2",
+        "dmg-builder": "6.6.1",
+        "fs-extra-p": "^7.0.1",
+        "is-ci": "^2.0.0",
+        "lazy-val": "^1.0.4",
+        "read-config-file": "3.2.2",
+        "sanitize-filename": "^1.6.1",
+        "update-notifier": "^2.5.0",
+        "yargs": "^13.2.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+          "dev": true
+        },
+        "cliui": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+          "dev": true,
+          "requires": {
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+          "dev": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^6.0.0",
+            "get-stream": "^4.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+          "dev": true
+        },
+        "get-stream": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "invert-kv": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "lcid": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "os-locale": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+          "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "lcid": "^2.0.0",
+            "mem": "^4.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+          "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+          "dev": true,
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+          "dev": true
+        },
+        "pump": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+          "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        },
+        "require-main-filename": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        },
+        "which-module": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+          "dev": true
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
+        },
+        "yargs": {
+          "version": "13.2.4",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+          "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+          "dev": true,
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "os-locale": "^3.1.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "13.1.0",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz",
+          "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "electron-download": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
+      "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.0.0",
+        "env-paths": "^1.0.0",
+        "fs-extra": "^4.0.1",
+        "minimist": "^1.2.0",
+        "nugget": "^2.0.1",
+        "path-exists": "^3.0.0",
+        "rc": "^1.2.1",
+        "semver": "^5.4.1",
+        "sumchecker": "^2.0.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "fs-extra": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+          "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        },
+        "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==",
+          "dev": true
+        }
+      }
+    },
+    "electron-osx-sign": {
+      "version": "0.4.11",
+      "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
+      "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "compare-version": "^0.1.2",
+        "debug": "^2.6.8",
+        "isbinaryfile": "^3.0.2",
+        "minimist": "^1.2.0",
+        "plist": "^3.0.1"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
+    "electron-publish": {
+      "version": "20.40.0",
+      "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.40.0.tgz",
+      "integrity": "sha512-mkjtsIgftRszuT/8do8TszmddokDnu254OyTeL8nE780o/A8t68oXHZzvlTJ4AQ8uBOYrA87JDO/BFCWjnVArA==",
+      "dev": true,
+      "requires": {
+        "bluebird-lst": "^1.0.7",
+        "builder-util": "~9.7.1",
+        "builder-util-runtime": "^8.2.1",
+        "chalk": "^2.4.2",
+        "fs-extra-p": "^7.0.1",
+        "lazy-val": "^1.0.4",
+        "mime": "^2.4.1"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.4.3",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz",
+          "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==",
+          "dev": true
+        }
+      }
+    },
     "electron-to-chromium": {
       "version": "1.3.124",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz",
@@ -4278,6 +5040,12 @@
         "minimalistic-crypto-utils": "^1.0.0"
       }
     },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true
+    },
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
@@ -4399,6 +5167,12 @@
       "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
       "dev": true
     },
+    "env-paths": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz",
+      "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=",
+      "dev": true
+    },
     "err-code": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
@@ -4866,6 +5640,18 @@
         }
       }
     },
+    "extract-zip": {
+      "version": "1.6.7",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
+      "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+      "dev": true,
+      "requires": {
+        "concat-stream": "1.6.2",
+        "debug": "2.6.9",
+        "mkdirp": "0.5.1",
+        "yauzl": "2.4.1"
+      }
+    },
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -4951,6 +5737,15 @@
         "websocket-driver": ">=0.5.1"
       }
     },
+    "fd-slicer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+      "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+      "dev": true,
+      "requires": {
+        "pend": "~1.2.0"
+      }
+    },
     "figgy-pudding": {
       "version": "3.5.1",
       "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
@@ -5218,6 +6013,16 @@
         "universalify": "^0.1.0"
       }
     },
+    "fs-extra-p": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz",
+      "integrity": "sha512-yhd2OV0HnHt2oitlp+X9hl2ReX4X/7kQeL7/72qzPHTZj5eUPGzAKOvEglU02Fa1OeG2rSy/aKB4WGVaLiF8tw==",
+      "dev": true,
+      "requires": {
+        "bluebird-lst": "^1.0.7",
+        "fs-extra": "^7.0.1"
+      }
+    },
     "fs-minipass": {
       "version": "1.2.5",
       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
@@ -5855,8 +6660,7 @@
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
       "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "get-stream": {
       "version": "3.0.0",
@@ -5920,6 +6724,15 @@
       "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
       "dev": true
     },
+    "global-dirs": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+      "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+      "dev": true,
+      "requires": {
+        "ini": "^1.3.4"
+      }
+    },
     "globals": {
       "version": "9.18.0",
       "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
@@ -5961,6 +6774,25 @@
         "delegate": "^3.1.2"
       }
     },
+    "got": {
+      "version": "6.7.1",
+      "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+      "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+      "dev": true,
+      "requires": {
+        "create-error-class": "^3.0.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^3.0.0",
+        "is-redirect": "^1.0.0",
+        "is-retry-allowed": "^1.0.0",
+        "is-stream": "^1.0.0",
+        "lowercase-keys": "^1.0.0",
+        "safe-buffer": "^5.0.1",
+        "timed-out": "^4.0.0",
+        "unzip-response": "^2.0.1",
+        "url-parse-lax": "^1.0.0"
+      }
+    },
     "graceful-fs": {
       "version": "4.1.15",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
@@ -6412,6 +7244,12 @@
         "resolve-from": "^3.0.0"
       }
     },
+    "import-lazy": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+      "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+      "dev": true
+    },
     "import-local": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
@@ -6494,7 +7332,6 @@
       "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
       "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
       "dev": true,
-      "optional": true,
       "requires": {
         "repeating": "^2.0.0"
       }
@@ -6714,6 +7551,15 @@
       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
       "dev": true
     },
+    "is-ci": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+      "dev": true,
+      "requires": {
+        "ci-info": "^2.0.0"
+      }
+    },
     "is-data-descriptor": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -6798,12 +7644,28 @@
         "is-extglob": "^2.1.1"
       }
     },
+    "is-installed-globally": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+      "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+      "dev": true,
+      "requires": {
+        "global-dirs": "^0.1.0",
+        "is-path-inside": "^1.0.0"
+      }
+    },
     "is-negated-glob": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
       "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
       "dev": true
     },
+    "is-npm": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+      "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+      "dev": true
+    },
     "is-number": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -6824,6 +7686,12 @@
         }
       }
     },
+    "is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true
+    },
     "is-path-cwd": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
@@ -6863,6 +7731,12 @@
       "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
       "dev": true
     },
+    "is-redirect": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+      "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+      "dev": true
+    },
     "is-relative": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
@@ -6872,6 +7746,12 @@
         "is-unc-path": "^1.0.0"
       }
     },
+    "is-retry-allowed": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+      "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+      "dev": true
+    },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -6897,8 +7777,7 @@
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
       "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "is-windows": {
       "version": "1.0.2",
@@ -7566,6 +8445,21 @@
       "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
       "dev": true
     },
+    "latest-version": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+      "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+      "dev": true,
+      "requires": {
+        "package-json": "^4.0.0"
+      }
+    },
+    "lazy-val": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
+      "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
+      "dev": true
+    },
     "lcid": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
@@ -7745,7 +8639,6 @@
       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
       "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
       "dev": true,
-      "optional": true,
       "requires": {
         "graceful-fs": "^4.1.2",
         "parse-json": "^2.2.0",
@@ -7758,8 +8651,7 @@
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -7884,12 +8776,17 @@
       "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
       "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
       "dev": true,
-      "optional": true,
       "requires": {
         "currently-unhandled": "^0.4.1",
         "signal-exit": "^3.0.0"
       }
     },
+    "lowercase-keys": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+      "dev": true
+    },
     "lru-cache": {
       "version": "4.1.5",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@@ -8052,8 +8949,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
       "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "map-stream": {
       "version": "0.1.0",
@@ -8128,7 +9024,6 @@
       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
       "dev": true,
-      "optional": true,
       "requires": {
         "camelcase-keys": "^2.0.0",
         "decamelize": "^1.1.2",
@@ -8146,8 +9041,7 @@
           "version": "1.2.0",
           "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
           "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -8813,6 +9707,29 @@
         "boolbase": "~1.0.0"
       }
     },
+    "nugget": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
+      "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.1.3",
+        "minimist": "^1.1.0",
+        "pretty-bytes": "^1.0.2",
+        "progress-stream": "^1.1.0",
+        "request": "^2.45.0",
+        "single-line-log": "^1.1.2",
+        "throttleit": "0.0.2"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
     "null-check": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
@@ -9238,6 +10155,18 @@
       "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
       "dev": true
     },
+    "package-json": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+      "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+      "dev": true,
+      "requires": {
+        "got": "^6.7.1",
+        "registry-auth-token": "^3.0.1",
+        "registry-url": "^3.0.3",
+        "semver": "^5.1.0"
+      }
+    },
     "pacote": {
       "version": "9.4.0",
       "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.4.0.tgz",
@@ -9409,6 +10338,15 @@
         "safe-buffer": "^5.1.1"
       }
     },
+    "parse-color": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
+      "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
+      "dev": true,
+      "requires": {
+        "color-convert": "~0.5.0"
+      }
+    },
     "parse-json": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
@@ -9574,6 +10512,12 @@
         }
       }
     },
+    "pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+      "dev": true
+    },
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -9610,6 +10554,17 @@
         "find-up": "^2.1.0"
       }
     },
+    "plist": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
+      "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.2.3",
+        "xmlbuilder": "^9.0.7",
+        "xmldom": "0.1.x"
+      }
+    },
     "png-js": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/png-js/-/png-js-0.1.1.tgz",
@@ -9698,6 +10653,22 @@
       "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
       "dev": true
     },
+    "prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "dev": true
+    },
+    "pretty-bytes": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
+      "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
+      "dev": true,
+      "requires": {
+        "get-stdin": "^4.0.1",
+        "meow": "^3.1.0"
+      }
+    },
     "printj": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
@@ -9711,18 +10682,79 @@
         "clipboard": "^2.0.0"
       }
     },
-    "process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
-      "dev": true
-    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "dev": true
+    },
+    "progress-stream": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
+      "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
+      "dev": true,
+      "requires": {
+        "speedometer": "~0.1.2",
+        "through2": "~0.2.3"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "object-keys": {
+          "version": "0.4.0",
+          "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+          "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        },
+        "through2": {
+          "version": "0.2.3",
+          "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
+          "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
+          "dev": true,
+          "requires": {
+            "readable-stream": "~1.1.9",
+            "xtend": "~2.1.1"
+          }
+        },
+        "xtend": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+          "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+          "dev": true,
+          "requires": {
+            "object-keys": "~0.4.0"
+          }
+        }
+      }
+    },
     "promise": {
       "version": "7.3.1",
       "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -10060,6 +11092,26 @@
         "schema-utils": "^1.0.0"
       }
     },
+    "rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "dev": true,
+      "requires": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
     "read-cache": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -10077,12 +11129,57 @@
         }
       }
     },
+    "read-config-file": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.2.tgz",
+      "integrity": "sha512-PuFpMgZF01VB0ydH1dfitAxCP/fh+qnfbA9cYNIPoxPbz0SMngsrafCtaHDWfER7MwlDz4fmrNBhPkakxxFpTg==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.9.2",
+        "ajv-keywords": "^3.4.0",
+        "bluebird-lst": "^1.0.7",
+        "dotenv": "^6.2.0",
+        "dotenv-expand": "^4.2.0",
+        "fs-extra-p": "^7.0.1",
+        "js-yaml": "^3.12.1",
+        "json5": "^2.1.0",
+        "lazy-val": "^1.0.4"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.10.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
+          "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^2.0.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "json5": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+          "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
     "read-pkg": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
       "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
       "dev": true,
-      "optional": true,
       "requires": {
         "load-json-file": "^1.0.0",
         "normalize-package-data": "^2.3.2",
@@ -10094,7 +11191,6 @@
           "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
           "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
           "dev": true,
-          "optional": true,
           "requires": {
             "graceful-fs": "^4.1.2",
             "pify": "^2.0.0",
@@ -10105,8 +11201,7 @@
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -10115,7 +11210,6 @@
       "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
       "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
       "dev": true,
-      "optional": true,
       "requires": {
         "find-up": "^1.0.0",
         "read-pkg": "^1.0.0"
@@ -10126,7 +11220,6 @@
           "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
           "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
           "dev": true,
-          "optional": true,
           "requires": {
             "path-exists": "^2.0.0",
             "pinkie-promise": "^2.0.0"
@@ -10137,7 +11230,6 @@
           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
           "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
           "dev": true,
-          "optional": true,
           "requires": {
             "pinkie-promise": "^2.0.0"
           }
@@ -10184,7 +11276,6 @@
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
       "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
       "dev": true,
-      "optional": true,
       "requires": {
         "indent-string": "^2.1.0",
         "strip-indent": "^1.0.1"
@@ -10229,6 +11320,25 @@
         "regjsparser": "^0.1.4"
       }
     },
+    "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==",
+      "dev": true,
+      "requires": {
+        "rc": "^1.1.6",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "registry-url": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+      "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+      "dev": true,
+      "requires": {
+        "rc": "^1.0.1"
+      }
+    },
     "regjsgen": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
@@ -10477,6 +11587,15 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
+    "sanitize-filename": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
+      "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=",
+      "dev": true,
+      "requires": {
+        "truncate-utf8-bytes": "^1.0.0"
+      }
+    },
     "saslprep": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.1.tgz",
@@ -10614,6 +11733,15 @@
       "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
       "dev": true
     },
+    "semver-diff": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+      "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+      "dev": true,
+      "requires": {
+        "semver": "^5.0.3"
+      }
+    },
     "semver-dsl": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
@@ -10802,6 +11930,15 @@
       "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
       "dev": true
     },
+    "single-line-log": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
+      "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1"
+      }
+    },
     "slash": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -11278,6 +12415,12 @@
         "chalk": "^2.0.1"
       }
     },
+    "speedometer": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
+      "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
+      "dev": true
+    },
     "split": {
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
@@ -11336,6 +12479,12 @@
         "safe-buffer": "^5.1.1"
       }
     },
+    "stat-mode": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz",
+      "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==",
+      "dev": true
+    },
     "static-eval": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz",
@@ -11567,7 +12716,6 @@
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
       "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
       "dev": true,
-      "optional": true,
       "requires": {
         "is-utf8": "^0.2.0"
       }
@@ -11583,11 +12731,16 @@
       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
       "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
       "dev": true,
-      "optional": true,
       "requires": {
         "get-stdin": "^4.0.1"
       }
     },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+      "dev": true
+    },
     "style-loader": {
       "version": "0.23.1",
       "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
@@ -11648,6 +12801,15 @@
         "when": "~3.6.x"
       }
     },
+    "sumchecker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
+      "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.2.0"
+      }
+    },
     "supports-color": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -11681,6 +12843,54 @@
         "inherits": "2"
       }
     },
+    "temp-file": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz",
+      "integrity": "sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ==",
+      "dev": true,
+      "requires": {
+        "async-exit-hook": "^2.0.1",
+        "bluebird-lst": "^1.0.6",
+        "fs-extra-p": "^7.0.0"
+      }
+    },
+    "term-size": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+      "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+      "dev": true,
+      "requires": {
+        "execa": "^0.7.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "0.7.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        }
+      }
+    },
     "terser": {
       "version": "3.17.0",
       "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
@@ -11899,6 +13109,12 @@
         }
       }
     },
+    "throttleit": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
+      "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
+      "dev": true
+    },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -11927,6 +13143,12 @@
       "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
       "dev": true
     },
+    "timed-out": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+      "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+      "dev": true
+    },
     "timers-browserify": {
       "version": "2.0.10",
       "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
@@ -12051,8 +13273,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
       "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "trim-right": {
       "version": "1.0.1",
@@ -12070,6 +13291,15 @@
         "glob": "^7.1.2"
       }
     },
+    "truncate-utf8-bytes": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+      "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
+      "dev": true,
+      "requires": {
+        "utf8-byte-length": "^1.0.1"
+      }
+    },
     "ts-node": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz",
@@ -12374,6 +13604,15 @@
         "imurmurhash": "^0.1.4"
       }
     },
+    "unique-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+      "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+      "dev": true,
+      "requires": {
+        "crypto-random-string": "^1.0.0"
+      }
+    },
     "universalify": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -12432,12 +13671,53 @@
         }
       }
     },
+    "unzip-response": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+      "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+      "dev": true
+    },
     "upath": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
       "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
       "dev": true
     },
+    "update-notifier": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+      "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+      "dev": true,
+      "requires": {
+        "boxen": "^1.2.1",
+        "chalk": "^2.0.1",
+        "configstore": "^3.0.0",
+        "import-lazy": "^2.1.0",
+        "is-ci": "^1.0.10",
+        "is-installed-globally": "^0.1.0",
+        "is-npm": "^1.0.0",
+        "latest-version": "^3.0.0",
+        "semver-diff": "^2.0.0",
+        "xdg-basedir": "^3.0.0"
+      },
+      "dependencies": {
+        "ci-info": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+          "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+          "dev": true
+        },
+        "is-ci": {
+          "version": "1.2.1",
+          "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+          "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+          "dev": true,
+          "requires": {
+            "ci-info": "^1.5.0"
+          }
+        }
+      }
+    },
     "uri-js": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -12481,6 +13761,15 @@
         "requires-port": "^1.0.0"
       }
     },
+    "url-parse-lax": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+      "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+      "dev": true,
+      "requires": {
+        "prepend-http": "^1.0.1"
+      }
+    },
     "use": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
@@ -12497,6 +13786,12 @@
         "tmp": "0.0.x"
       }
     },
+    "utf8-byte-length": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
+      "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
+      "dev": true
+    },
     "util": {
       "version": "0.11.1",
       "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
@@ -13108,6 +14403,48 @@
         "string-width": "^1.0.2 || 2"
       }
     },
+    "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==",
+      "dev": true,
+      "requires": {
+        "string-width": "^2.1.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        }
+      }
+    },
     "windows-release": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.1.0.tgz",
@@ -13148,6 +14485,17 @@
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
       "dev": true
     },
+    "write-file-atomic": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
+      "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^3.0.2"
+      }
+    },
     "ws": {
       "version": "3.3.3",
       "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
@@ -13159,6 +14507,12 @@
         "ultron": "~1.1.0"
       }
     },
+    "xdg-basedir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+      "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+      "dev": true
+    },
     "xlsx": {
       "version": "0.14.1",
       "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.14.1.tgz",
@@ -13197,6 +14551,12 @@
       "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
       "dev": true
     },
+    "xmldom": {
+      "version": "0.1.27",
+      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+      "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
+      "dev": true
+    },
     "xmlhttprequest-ssl": {
       "version": "1.5.5",
       "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
@@ -13284,6 +14644,15 @@
         }
       }
     },
+    "yauzl": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+      "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+      "dev": true,
+      "requires": {
+        "fd-slicer": "~1.0.1"
+      }
+    },
     "yeast": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
diff --git a/package.json b/package.json
index 3a0cdd9e4..9911a95c9 100644
--- a/package.json
+++ b/package.json
@@ -1,12 +1,35 @@
 {
   "name": "nghyd",
+  "description": "Hydraulic calculators",
+  "author": "Irstea",
   "version": "4.1.0",
+  "main": "main.js",
+  "homepage": "http://cassiopee.g-eau.net",
   "license": "MIT",
+  "build": {
+    "appId": "fr.irstea.cassiopee",
+    "productName": "Cassiopee",
+    "linux": {
+      "target": "deb"
+    },
+    "deb": {
+      "maintainer": "irstea"
+    },
+    "mac": {
+      "target": "dmg"
+    },
+    "win": {
+      "target": "nsis"
+    }
+  },
   "scripts": {
     "ng": "ng",
     "start": "npm run preprocess; ng serve --host 0.0.0.0",
     "prod": "npm run preprocess; ng serve --host 0.0.0.0 --prod",
     "build": "npm run preprocess; ng build --prod --build-optimizer=false",
+    "electron": "electron .",
+    "electron-dist": "electron-builder",
+    "electron-clean-dist": "rm dist/nghyd*",
     "test": "ng test",
     "lint": "ng lint",
     "e2e": "ng e2e",
@@ -66,6 +89,8 @@
     "@types/jasminewd2": "^2.0.6",
     "@types/node": "^8.10.42",
     "codelyzer": "^4.5.0",
+    "electron": "^5.0.1",
+    "electron-builder": "^20.40.2",
     "jasmine-core": "~3.3.0",
     "jasmine-spec-reporter": "~4.2.1",
     "karma": "^3.1.4",
-- 
GitLab


From 064fe4693d3bf9d3322470d845bdd916aefc1ce2 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 27 May 2019 17:54:13 +0200
Subject: [PATCH 02/18] Prmeier build electron fonctionnel, avec paquet .deb

---
 .gitignore           |  1 +
 electron-builder.yml | 42 ++++++++++++++++++++++++++++++++++++++++++
 package.json         | 20 ++------------------
 src/index.html       |  2 +-
 4 files changed, 46 insertions(+), 19 deletions(-)
 create mode 100644 electron-builder.yml

diff --git a/.gitignore b/.gitignore
index 9bce4aeac..2d1cac7ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
 # compiled output
 /dist
 /tmp
+/release
 /out-tsc
 /src/assets/docs-*
 /compodoc-fr
diff --git a/electron-builder.yml b/electron-builder.yml
new file mode 100644
index 000000000..304afc7ff
--- /dev/null
+++ b/electron-builder.yml
@@ -0,0 +1,42 @@
+appId:        fr.irstea.cassiopee
+productName:  Cassiopee
+
+directories:
+  output: release
+
+files:
+  - "**/*"
+  - "!**/*.ts"
+  - "!*.code-workspace"
+  - "!LICENSE.md"
+  - "!package.json"
+  - "!package-lock.json"
+  - "!src/"
+  - "!e2e/"
+  - "!hooks/"
+  - "!angular.json"
+  - "!_config.yml"
+  - "!karma.conf.js"
+  - "!tsconfig.json"
+  - "!tslint.json"
+
+linux:
+  target:
+    - "deb"
+    - "AppImage"
+    - "snap"
+  category: science
+
+deb:
+  maintainer: irstea
+
+#mac:
+  #target: dmg
+  # icon: "src/app/assets/…
+
+# dmg:
+  # icon: "src/app/assets/…
+
+win:
+  target: portable
+  # icon: "src/app/assets/…
diff --git a/package.json b/package.json
index 9911a95c9..758d672f5 100644
--- a/package.json
+++ b/package.json
@@ -6,30 +6,14 @@
   "main": "main.js",
   "homepage": "http://cassiopee.g-eau.net",
   "license": "MIT",
-  "build": {
-    "appId": "fr.irstea.cassiopee",
-    "productName": "Cassiopee",
-    "linux": {
-      "target": "deb"
-    },
-    "deb": {
-      "maintainer": "irstea"
-    },
-    "mac": {
-      "target": "dmg"
-    },
-    "win": {
-      "target": "nsis"
-    }
-  },
   "scripts": {
     "ng": "ng",
     "start": "npm run preprocess; ng serve --host 0.0.0.0",
     "prod": "npm run preprocess; ng serve --host 0.0.0.0 --prod",
     "build": "npm run preprocess; ng build --prod --build-optimizer=false",
     "electron": "electron .",
-    "electron-dist": "electron-builder",
-    "electron-clean-dist": "rm dist/nghyd*",
+    "electron-build": "electron-builder",
+    "electron-clean": "rm dist/*.deb dist/*.AppImage dist/*.snap",
     "test": "ng test",
     "lint": "ng lint",
     "e2e": "ng e2e",
diff --git a/src/index.html b/src/index.html
index c08729773..d0cfac235 100644
--- a/src/index.html
+++ b/src/index.html
@@ -2,7 +2,7 @@
 <html lang="en">
 
 <head>
-  <base href="/">
+  <base href="">
   <meta charset="utf-8">
   <title>ngHyd - Calculettes hydrauliques</title>
 
-- 
GitLab


From f4af15d1aaa3c26b92d72973496df2458246c9e5 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 11:29:24 +0200
Subject: [PATCH 03/18] =?UTF-8?q?M=C3=A0J=20config=20electron-builder?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 electron-builder.yml | 8 +++++---
 package.json         | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/electron-builder.yml b/electron-builder.yml
index 304afc7ff..07aff852f 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -23,8 +23,8 @@ files:
 linux:
   target:
     - "deb"
-    - "AppImage"
-    - "snap"
+    #- "AppImage"
+    #- "snap"
   category: science
 
 deb:
@@ -38,5 +38,7 @@ deb:
   # icon: "src/app/assets/…
 
 win:
-  target: portable
+  target:
+   - portable
+   - nsis
   # icon: "src/app/assets/…
diff --git a/package.json b/package.json
index 758d672f5..c591a2db4 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
     "build": "npm run preprocess; ng build --prod --build-optimizer=false",
     "electron": "electron .",
     "electron-build": "electron-builder",
-    "electron-clean": "rm dist/*.deb dist/*.AppImage dist/*.snap",
+    "electron-clean": "rm release/*",
     "test": "ng test",
     "lint": "ng lint",
     "e2e": "ng e2e",
-- 
GitLab


From ac37fd4e8d3fca381418eda9f70e51c1f845227c Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 14:30:03 +0200
Subject: [PATCH 04/18] =?UTF-8?q?electron:=20appli=20plus=20l=C3=A9g=C3=A8?=
 =?UTF-8?q?re,=20sans=20node=5Fmodules=20!?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 electron-builder.yml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/electron-builder.yml b/electron-builder.yml
index 07aff852f..edcc31ee3 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -13,7 +13,11 @@ files:
   - "!package-lock.json"
   - "!src/"
   - "!e2e/"
+  - "!doc/"
+  - "!docs-fr/"
+  - "!compodoc-fr/"
   - "!hooks/"
+  - "!node_modules/"
   - "!angular.json"
   - "!_config.yml"
   - "!karma.conf.js"
-- 
GitLab


From 58d5ab970225d160d59096566ff77900cc339a77 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 14:32:57 +0200
Subject: [PATCH 05/18] mkdocs: liens compatibles avec le protocole file:

---
 mkdocs.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mkdocs.yml b/mkdocs.yml
index 04e5e3f7f..ae4db294d 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -4,6 +4,7 @@ docs_dir: docs-fr
 site_dir: src/assets/docs-fr/
 copyright: CC BY-NC-ND 4.0, UMR G-EAU 2019
 theme: material
+use_directory_urls: false
 extra_javascript:
     - javascripts/mathjax/MathJax.js?config=TeX-AMS_CHTML
 markdown_extensions:
-- 
GitLab


From a65ad74f67624bf82e34be5d51b91a6766c3d8e3 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 14:33:25 +0200
Subject: [PATCH 06/18] =?UTF-8?q?ajustement=20des=20liens=20vers=20la=20do?=
 =?UTF-8?q?cumentation=20(compatibilit=C3=A9=20electron)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/components/generic-calculator/calculator.component.ts | 2 +-
 src/locale/messages.en.json                                   | 2 +-
 src/locale/messages.fr.json                                   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index 245b3acaf..67b856e1f 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -412,7 +412,7 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit,
     }
 
     public openHelp() {
-        window.open("assets/docs-fr/calculators/" + this._formulaire.helpLink + "/", "_blank");
+        window.open("assets/docs-fr/calculators/" + this._formulaire.helpLink + ".html", "_blank");
     }
 
     /**
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 32364c098..1392829d8 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -275,7 +275,7 @@
     "INFO_THEME_PASSE_A_BASSIN_TITRE": "Fish ladder",
     "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Tools for sizing a natural fish pass also called macroroughness pass or rock-ramp fish pass",
     "INFO_THEME_PASSE_NATURELLE_TITRE": "Natural pass",
-    "INFO_WELCOME_CONTENT": "<p>The Cassiopée software was developed by <a href=\"https://www.afbiodiversite.fr\" target=\"_blank\">AFB</a> (French Agency for Biodiversity) and <a href=\"http://g-eau.fr/index.php/en/\" target=\"_blank\">UMR G-EAU</a> (Joint Research Unit \"Water Management, Actors, Territories\").</p><p>It includes tools for designing fish passes, and hydraulic calculation tools useful for environmental and agricultural engineering.</p><p>For more information, consult <a href=\"assets/docs-fr/mentions_legales/\" target=\"_blank\">legal notice</a> and <a href=\"assets/docs-fr/\" target=\"_blank\">documentation</a>.</p>",
+    "INFO_WELCOME_CONTENT": "<p>The Cassiopée software was developed by <a href=\"https://www.afbiodiversite.fr\" target=\"_blank\">AFB</a> (French Agency for Biodiversity) and <a href=\"http://g-eau.fr/index.php/en/\" target=\"_blank\">UMR G-EAU</a> (Joint Research Unit \"Water Management, Actors, Territories\").</p><p>It includes tools for designing fish passes, and hydraulic calculation tools useful for environmental and agricultural engineering.</p><p>For more information, consult <a href=\"assets/docs-fr/mentions_legales.html\" target=\"_blank\">legal notice</a> and <a href=\"assets/docs-fr/index.html\" target=\"_blank\">documentation</a>.</p>",
     "INFO_WELCOME_SUBTITLE": "Hydraulic calculators",
     "WARNING_REMOUS_ARRET_CRITIQUE": "Calculation stopped: critical elevation reached at abscissa %x%",
     "WARNING_STRUCTUREKIVI_HP_TROP_ELEVE": "h/p must not be greater than 2.5. h/p is forced to 2.5",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 7228186b3..16cdbe471 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -275,7 +275,7 @@
     "INFO_THEME_PASSE_A_BASSIN_TITRE": "Passe à bassins",
     "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Outils de dimensionnement d'une passe à poissons de type passe naturelle ou encore appelée passe à macro-rugosités",
     "INFO_THEME_PASSE_NATURELLE_TITRE": "Passe naturelle",
-    "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par l'<a href=\"https://www.afbiodiversite.fr\" target=\"_blank\">AFB</a> (Agence Française pour la Biodiversité) et <a href=\"http://g-eau.fr\" target=\"_blank\">L'UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception de passes à poissons et des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs-fr/mentions_legales/\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs-fr/\" target=\"_blank\">documentation</a>.</p>",
+    "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par l'<a href=\"https://www.afbiodiversite.fr\" target=\"_blank\">AFB</a> (Agence Française pour la Biodiversité) et <a href=\"http://g-eau.fr\" target=\"_blank\">L'UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception de passes à poissons et des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs-fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs-fr/index.html\" target=\"_blank\">documentation</a>.</p>",
     "INFO_WELCOME_SUBTITLE": "Modules de calcul d'hydraulique",
     "WARNING_REMOUS_ARRET_CRITIQUE": "Arrêt du calcul&nbsp;: hauteur critique atteinte à l'abscisse %x%",
     "WARNING_STRUCTUREKIVI_HP_TROP_ELEVE": "h/p ne doit pas être supérieur à 2,5. h/p est forcé à 2,5",
-- 
GitLab


From 143d4d821e810ddf7116cde959e28544c896e8df Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 14:34:02 +0200
Subject: [PATCH 07/18] update package.json scripts

---
 package.json | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index c591a2db4..232118e9e 100644
--- a/package.json
+++ b/package.json
@@ -7,14 +7,12 @@
   "homepage": "http://cassiopee.g-eau.net",
   "license": "MIT",
   "scripts": {
-    "ng": "ng",
     "start": "npm run preprocess; ng serve --host 0.0.0.0",
     "prod": "npm run preprocess; ng serve --host 0.0.0.0 --prod",
     "build": "npm run preprocess; ng build --prod --build-optimizer=false",
-    "electron": "electron .",
-    "electron-build": "electron-builder",
-    "electron-clean": "rm release/*",
-    "test": "ng test",
+    "release-clean": "rm -r release/*",
+    "release-linux": "npm run build && npm run electron-build",
+    "release-windows": "ng build --prod --build-optimizer=false && electron-builder",
     "lint": "ng lint",
     "e2e": "ng e2e",
     "e2equick": "ng e2e --dev-server-target= --baseUrl=http://localhost:4200",
-- 
GitLab


From e6c6b76c4756573f43e51d9a198fd152ddfee586 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 14:47:22 +0200
Subject: [PATCH 08/18] electron: debug

---
 main.js | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/main.js b/main.js
index 42e68e906..7f9d0e1a3 100644
--- a/main.js
+++ b/main.js
@@ -12,7 +12,23 @@ function createWindow () {
     win.setMenuBarVisibility(false)
 
     // Open the DevTools.
-    // win.webContents.openDevTools();
+    win.webContents.openDevTools();
+
+    // Open external doc links in specific window
+    win.webContents.on('new-window', (event, url, frameName, disposition, options) => {
+        event.preventDefault();
+        // win.src = url;
+        const win2 = new BrowserWindow({
+            webContents: options.webContents, // use existing webContents if provided
+            show: false
+        });
+        win2.webContents.openDevTools();
+        win2.once('ready-to-show', () => win2.show());
+        if (!options.webContents) {
+            win2.loadURL(url); // existing webContents will be navigated automatically
+        }
+        event.newGuest = win2;
+    });
 
     // Close the app.
     win.on('close', () => {
-- 
GitLab


From 19bb8329ba3adc87a47b371d9d14211afbfa966b Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 15:30:49 +0200
Subject: [PATCH 09/18] =?UTF-8?q?m=C3=A0j=20scripts=20electron?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 package.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package.json b/package.json
index 232118e9e..1454d417a 100644
--- a/package.json
+++ b/package.json
@@ -11,8 +11,8 @@
     "prod": "npm run preprocess; ng serve --host 0.0.0.0 --prod",
     "build": "npm run preprocess; ng build --prod --build-optimizer=false",
     "release-clean": "rm -r release/*",
-    "release-linux": "npm run build && npm run electron-build",
-    "release-windows": "ng build --prod --build-optimizer=false && electron-builder",
+    "release-linux": "npm run release-clean && npm run build && electron-builder",
+    "release-windows": "rd /s /q release & ng build --prod --build-optimizer=false && electron-builder",
     "lint": "ng lint",
     "e2e": "ng e2e",
     "e2equick": "ng e2e --dev-server-target= --baseUrl=http://localhost:4200",
-- 
GitLab


From a6ef8121b494cdcb90d202e22477636c86dd9757 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 16:14:46 +0200
Subject: [PATCH 10/18] updated package configuration for electron

---
 electron-builder.yml |  6 +++---
 main.js              |  6 +++---
 package.json         | 23 +++++++++++++----------
 3 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/electron-builder.yml b/electron-builder.yml
index edcc31ee3..366acec14 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -1,5 +1,5 @@
-appId:        fr.irstea.cassiopee
-productName:  Cassiopee
+appId: fr.irstea.cassiopee
+productName: Cassiopée
 
 directories:
   output: release
@@ -43,6 +43,6 @@ deb:
 
 win:
   target:
-   - portable
    - nsis
+   #- portable
   # icon: "src/app/assets/…
diff --git a/main.js b/main.js
index 7f9d0e1a3..ed3363069 100644
--- a/main.js
+++ b/main.js
@@ -12,10 +12,10 @@ function createWindow () {
     win.setMenuBarVisibility(false)
 
     // Open the DevTools.
-    win.webContents.openDevTools();
+    // win.webContents.openDevTools();
 
     // Open external doc links in specific window
-    win.webContents.on('new-window', (event, url, frameName, disposition, options) => {
+    /* win.webContents.on('new-window', (event, url, frameName, disposition, options) => {
         event.preventDefault();
         // win.src = url;
         const win2 = new BrowserWindow({
@@ -28,7 +28,7 @@ function createWindow () {
             win2.loadURL(url); // existing webContents will be navigated automatically
         }
         event.newGuest = win2;
-    });
+    }); */
 
     // Close the app.
     win.on('close', () => {
diff --git a/package.json b/package.json
index 1454d417a..475233c07 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "nghyd",
+  "name": "cassiopee",
   "description": "Hydraulic calculators",
   "author": "Irstea",
   "version": "4.1.0",
@@ -7,19 +7,22 @@
   "homepage": "http://cassiopee.g-eau.net",
   "license": "MIT",
   "scripts": {
-    "start": "npm run preprocess; ng serve --host 0.0.0.0",
-    "prod": "npm run preprocess; ng serve --host 0.0.0.0 --prod",
-    "build": "npm run preprocess; ng build --prod --build-optimizer=false",
+    "ng": "ng",
+    "start": "npm run preprocess && ng serve --host 0.0.0.0",
+    "prod": "npm run preprocess && ng serve --host 0.0.0.0 --prod",
+    "build": "npm run preprocess && ng build --prod --build-optimizer=false",
+    "electron": "electron .",
+    "electron-builder": "electron-builder",
     "release-clean": "rm -r release/*",
-    "release-linux": "npm run release-clean && npm run build && electron-builder",
-    "release-windows": "rd /s /q release & ng build --prod --build-optimizer=false && electron-builder",
+    "release-linux": "npm run release-clean & npm run build && electron-builder",
+    "release-windows": "rd /s /q release & ng build --prod --build-optimizer=false && npm run electron-builder",
     "lint": "ng lint",
     "e2e": "ng e2e",
     "e2equick": "ng e2e --dev-server-target= --baseUrl=http://localhost:4200",
-    "jalhyd": "rm node_modules/jalhyd; cd ../jalhyd; npm run build; cd ../nghyd; npm install ../jalhyd;",
-    "mathjax": "rsync -az --delete node_modules/mathjax docs-fr/javascripts;",
-    "mkdocs": "npm run mathjax; find docs-fr/javascripts/ -name '*.md' -type f -delete; python3 -m mkdocs build",
-    "preprocess": "node preprocessors.js; npm run mkdocs;",
+    "jalhyd": "rm node_modules/jalhyd && cd ../jalhyd && npm run build && cd ../nghyd && npm install ../jalhyd",
+    "mathjax": "rsync -az --delete node_modules/mathjax docs-fr/javascripts",
+    "mkdocs": "npm run mathjax && find docs-fr/javascripts/ -name '*.md' -type f -delete && python3 -m mkdocs build",
+    "preprocess": "node preprocessors.js && npm run mkdocs",
     "viz": "tsviz -recursive src/ nghyd_class_diagram.png",
     "compodoc-patch": "sed -i '/Application.prototype.detectAngularJSProjects = function () {/a return false; // patch cracra, voir https://github.com/compodoc/compodoc/issues/667' node_modules/@compodoc/compodoc/dist/index-cli.js",
     "compodoc": "nodejs node_modules/@compodoc/compodoc/bin/index-cli.js -p src/tsconfig.app.json -s --language fr-FR -d compodoc-fr"
-- 
GitLab


From 09273ef673945506a87b1d4da368f19129910773 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 16:52:51 +0200
Subject: [PATCH 11/18] icone de test

---
 electron-builder.yml |   9 ++-------
 src/icon.png         | Bin 0 -> 11719 bytes
 2 files changed, 2 insertions(+), 7 deletions(-)
 create mode 100644 src/icon.png

diff --git a/electron-builder.yml b/electron-builder.yml
index 366acec14..c1ac9ba46 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -34,15 +34,10 @@ linux:
 deb:
   maintainer: irstea
 
-#mac:
-  #target: dmg
-  # icon: "src/app/assets/…
-
-# dmg:
-  # icon: "src/app/assets/…
+mac:
+  target: dmg
 
 win:
   target:
    - nsis
    #- portable
-  # icon: "src/app/assets/…
diff --git a/src/icon.png b/src/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcee9288fb8d0d2a66ea0a2f1d44047d2d227a49
GIT binary patch
literal 11719
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

literal 0
HcmV?d00001

-- 
GitLab


From 061c3e1ca2fedac1d4bf689825cc1068271cd53e Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 17:05:57 +0200
Subject: [PATCH 12/18] electron: updated icon configuration

---
 electron-builder.yml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/electron-builder.yml b/electron-builder.yml
index c1ac9ba46..6e48e65bd 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -30,14 +30,17 @@ linux:
     #- "AppImage"
     #- "snap"
   category: science
+  icon: dist
 
 deb:
   maintainer: irstea
 
 mac:
   target: dmg
+  icon: dist
 
 win:
   target:
    - nsis
    #- portable
+  icon: dist
-- 
GitLab


From 588d7ab80c4e625c69210c73c91125e0acdc8db1 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 28 May 2019 17:35:19 +0200
Subject: [PATCH 13/18] updated electron icon config

---
 electron-builder.yml       |   4 +---
 {src => electron}/icon.png | Bin
 2 files changed, 1 insertion(+), 3 deletions(-)
 rename {src => electron}/icon.png (100%)

diff --git a/electron-builder.yml b/electron-builder.yml
index 6e48e65bd..2739f9928 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -3,6 +3,7 @@ productName: Cassiopée
 
 directories:
   output: release
+  buildResources: "electron"
 
 files:
   - "**/*"
@@ -30,17 +31,14 @@ linux:
     #- "AppImage"
     #- "snap"
   category: science
-  icon: dist
 
 deb:
   maintainer: irstea
 
 mac:
   target: dmg
-  icon: dist
 
 win:
   target:
    - nsis
    #- portable
-  icon: dist
diff --git a/src/icon.png b/electron/icon.png
similarity index 100%
rename from src/icon.png
rename to electron/icon.png
-- 
GitLab


From 3e922ebe08f18ce8002aa730269b63caf2357895 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 29 May 2019 09:52:07 +0200
Subject: [PATCH 14/18] =?UTF-8?q?configuration=20electron=20pour=20une=20i?=
 =?UTF-8?q?c=C3=B4ne=20dans=20le=20paquet=20.deb?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 electron-builder.yml |   1 +
 src/icon.png         | Bin 0 -> 11719 bytes
 2 files changed, 1 insertion(+)
 create mode 100644 src/icon.png

diff --git a/electron-builder.yml b/electron-builder.yml
index 2739f9928..2d3f9a1a6 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -31,6 +31,7 @@ linux:
     #- "AppImage"
     #- "snap"
   category: science
+  icon: dist
 
 deb:
   maintainer: irstea
diff --git a/src/icon.png b/src/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcee9288fb8d0d2a66ea0a2f1d44047d2d227a49
GIT binary patch
literal 11719
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

literal 0
HcmV?d00001

-- 
GitLab


From dcdd4d9fcd8f91cfd6e829b316d2d6f89b124b11 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 29 May 2019 10:33:57 +0200
Subject: [PATCH 15/18] Documentation pour electron / build windows

---
 README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/README.md b/README.md
index 803a0d3fb..a700f0cf7 100644
--- a/README.md
+++ b/README.md
@@ -193,3 +193,49 @@ Custom Material SVG Icons will only show up when the application is deployed on
 4. Dans le constructeur de _FormulaireService_, ajouter une entrée dans `this.calculatorPaths` pour fournir le préfixe des fichiers de configuration/internationalisation.
 
 5. **Si une nouvelle classe a été créée à l'étape 2**, dans la méthode _FormulaireService.newFormulaire()_, compléter le _switch_ pour fournir la classe à instancier.
+
+# Build desktop packages with Electron
+
+## linux .deb package
+
+Execute `npm run release-linux`. Find the .deb package in `/release`.
+
+## windows installer
+
+Several npm scripts of `package.json` won't work with windows (for ex. "preprocess"). Building
+the Electron package is a little more complicated.
+
+### install dependencies
+ * Git, for example [https://gitforwindows.org](https://gitforwindows.org)
+ * Nodejs [https://nodejs.org/en/download](https://nodejs.org/en/download)
+ * typescript compiler (system wide) : `npm install -g typescript`
+ * angular cli (system wide) : `npm install -g @angular/cli`
+ * electron-builder (system wide) : `npm install -g electron-builder`
+
+### build jalhyd
+Clone `jalhyd` repository.
+
+Install packages with `npm install`.
+
+As `preprocess` does not work, copy `src/date_revision.ts` file from a linux build, or create it with the following (example) content :
+```typescript
+export const jalhydDateRev = "2019-05-24";
+export const jalhydVersion = "stable-105-gdfc538b";
+```
+
+Compile jalhyd with `tsc --p "src/tsconfig.app.json"`
+
+
+### build nghyd
+Clone `nghyd` repository.
+
+Install packages with `npm install`.
+
+As `preprocess` does not work, copy `src/date_revision.ts` file from a linux build, or create it with the following (example) content :
+```typescript
+export const nghydDateRev = "2019-05-28";
+export const nghydVersion = "4.3.0-119-ga6ef812";
+```
+Compile nghyd with `ng build --prod --build-optimizer=false`
+
+Build package with `electron-builder`. Find the generated installer in `/release`.
-- 
GitLab


From a33f3ac0619f037f79b2fbb4e071ac8b6e2f7f38 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 29 May 2019 10:56:25 +0200
Subject: [PATCH 16/18] =?UTF-8?q?remplacement=20ic=C3=B4ne=20SVG=20"excel"?=
 =?UTF-8?q?=20par=20une=20ic=C3=B4ne=20standard=20(plus=20compatible)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/app.component.ts                                    | 6 ------
 .../fixedvar-results/fixed-results.component.html           | 2 +-
 .../fixedvar-results/fixed-results.component.scss           | 6 ------
 .../components/fixedvar-results/var-results.component.html  | 2 +-
 .../components/fixedvar-results/var-results.component.scss  | 3 ---
 .../components/pab-results/pab-results-table.component.html | 2 +-
 .../components/pab-results/pab-results-table.component.scss | 3 ---
 src/assets/icons/file-excel-box.svg                         | 1 -
 src/assets/icons/file-excel.svg                             | 1 -
 9 files changed, 3 insertions(+), 23 deletions(-)
 delete mode 100644 src/assets/icons/file-excel-box.svg
 delete mode 100644 src/assets/icons/file-excel.svg

diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index c4ebf521a..cf38a7c63 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -124,12 +124,6 @@ export class AppComponent implements OnInit, OnDestroy, Observer {
         this.showLoading(false);
       }
     });
-
-    // icônes personnalisées
-    this.matIconRegistry.addSvgIcon(
-      "file_excel",
-      this.domSanitizer.bypassSecurityTrustResourceUrl("../../assets/icons/file-excel.svg")
-    );
   }
 
   /**
diff --git a/src/app/components/fixedvar-results/fixed-results.component.html b/src/app/components/fixedvar-results/fixed-results.component.html
index 1c2c8f0b4..d915732d8 100644
--- a/src/app/components/fixedvar-results/fixed-results.component.html
+++ b/src/app/components/fixedvar-results/fixed-results.component.html
@@ -2,7 +2,7 @@
 
     <div class="fixed-results-buttons">
         <button mat-icon-button (click)="exportAsSpreadsheet()">
-            <mat-icon color="primary" svgIcon="file_excel" class="scaled09"></mat-icon>
+            <mat-icon color="primary">file_download</mat-icon>
         </button>
     </div>
 
diff --git a/src/app/components/fixedvar-results/fixed-results.component.scss b/src/app/components/fixedvar-results/fixed-results.component.scss
index 5a8e48d7a..c2fee955e 100644
--- a/src/app/components/fixedvar-results/fixed-results.component.scss
+++ b/src/app/components/fixedvar-results/fixed-results.component.scss
@@ -16,12 +16,6 @@
     button {
         margin-left: 3px;
         width: auto;
-
-        mat-icon {
-            &.scaled09 {
-                transform: scale(0.9);
-            }
-        }
     }
 }
 
diff --git a/src/app/components/fixedvar-results/var-results.component.html b/src/app/components/fixedvar-results/var-results.component.html
index 30d0afac8..e7bbd993f 100644
--- a/src/app/components/fixedvar-results/var-results.component.html
+++ b/src/app/components/fixedvar-results/var-results.component.html
@@ -2,7 +2,7 @@
     <div fxFlex="1 1 100%">
         <div class="var-results-buttons">
             <button mat-icon-button (click)="exportAsSpreadsheet()">
-                <mat-icon color="primary" svgIcon="file_excel" class="scaled09"></mat-icon>
+                <mat-icon color="primary">file_download</mat-icon>
             </button>
             <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(variableResults)">
                 <mat-icon color="primary" class="scaled12">fullscreen</mat-icon>
diff --git a/src/app/components/fixedvar-results/var-results.component.scss b/src/app/components/fixedvar-results/var-results.component.scss
index aa3f8ec31..12d1148fc 100644
--- a/src/app/components/fixedvar-results/var-results.component.scss
+++ b/src/app/components/fixedvar-results/var-results.component.scss
@@ -21,9 +21,6 @@
             &.scaled12 {
                 transform: scale(1.2)
             }
-            &.scaled09 {
-                transform: scale(0.9);
-            }
         }
     }
 }
diff --git a/src/app/components/pab-results/pab-results-table.component.html b/src/app/components/pab-results/pab-results-table.component.html
index bbdbf38db..4a86d0a98 100644
--- a/src/app/components/pab-results/pab-results-table.component.html
+++ b/src/app/components/pab-results/pab-results-table.component.html
@@ -3,7 +3,7 @@
     <div fxFlex="1 1 100%">
         <div class="pab-results-table-buttons">
             <button mat-icon-button (click)="exportAsSpreadsheet()">
-                <mat-icon color="primary" svgIcon="file_excel" class="scaled09"></mat-icon>
+                <mat-icon color="primary">file_download</mat-icon>
             </button>
             <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(pabResultsTable)">
                 <mat-icon color="primary" class="scaled12">fullscreen</mat-icon>
diff --git a/src/app/components/pab-results/pab-results-table.component.scss b/src/app/components/pab-results/pab-results-table.component.scss
index 780da209d..7e227e04e 100644
--- a/src/app/components/pab-results/pab-results-table.component.scss
+++ b/src/app/components/pab-results/pab-results-table.component.scss
@@ -21,9 +21,6 @@
             &.scaled12 {
                 transform: scale(1.2)
             }
-            &.scaled09 {
-                transform: scale(0.9);
-            }
         }
     }
 }
diff --git a/src/assets/icons/file-excel-box.svg b/src/assets/icons/file-excel-box.svg
deleted file mode 100644
index f0be5069b..000000000
--- a/src/assets/icons/file-excel-box.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></svg>
\ No newline at end of file
diff --git a/src/assets/icons/file-excel.svg b/src/assets/icons/file-excel.svg
deleted file mode 100644
index 77acecd83..000000000
--- a/src/assets/icons/file-excel.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M17,11H13V13H14L12,14.67L10,13H11V11H7V13H8L11,15.5L8,18H7V20H11V18H10L12,16.33L14,18H13V20H17V18H16L13,15.5L16,13H17V11Z" /></svg>
\ No newline at end of file
-- 
GitLab


From ef1ef50058482772f9444346da7989da37cacd6f Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 29 May 2019 11:29:23 +0200
Subject: [PATCH 17/18] =?UTF-8?q?Fix=20#217=20mathjax:=20copie=20des=20fic?=
 =?UTF-8?q?hiers=20n=C3=A9cessaires=20seulement?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 package.json        | 2 +-
 rsync-mathjax-files | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)
 create mode 100644 rsync-mathjax-files

diff --git a/package.json b/package.json
index 475233c07..0c1d5e3f4 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
     "e2e": "ng e2e",
     "e2equick": "ng e2e --dev-server-target= --baseUrl=http://localhost:4200",
     "jalhyd": "rm node_modules/jalhyd && cd ../jalhyd && npm run build && cd ../nghyd && npm install ../jalhyd",
-    "mathjax": "rsync -az --delete node_modules/mathjax docs-fr/javascripts",
+    "mathjax": "rsync -az --delete `cat rsync-mathjax-files` docs-fr/javascripts/mathjax",
     "mkdocs": "npm run mathjax && find docs-fr/javascripts/ -name '*.md' -type f -delete && python3 -m mkdocs build",
     "preprocess": "node preprocessors.js && npm run mkdocs",
     "viz": "tsviz -recursive src/ nghyd_class_diagram.png",
diff --git a/rsync-mathjax-files b/rsync-mathjax-files
new file mode 100644
index 000000000..6389b3765
--- /dev/null
+++ b/rsync-mathjax-files
@@ -0,0 +1,3 @@
+node_modules/mathjax/MathJax.js
+node_modules/mathjax/config
+node_modules/mathjax/jax
\ No newline at end of file
-- 
GitLab


From f53c20a43dd5b5b473f0bbaf5e62060f55d62919 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 29 May 2019 11:36:30 +0200
Subject: [PATCH 18/18] =?UTF-8?q?M=C3=A0J=20doc=20build=20windows?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/README.md b/README.md
index a700f0cf7..e406de7bd 100644
--- a/README.md
+++ b/README.md
@@ -200,6 +200,8 @@ Custom Material SVG Icons will only show up when the application is deployed on
 
 Execute `npm run release-linux`. Find the .deb package in `/release`.
 
+Running `dpkg -i cassiopee_*.deb` will install Cassiopée in `/opt/Cassiopee`
+
 ## windows installer
 
 Several npm scripts of `package.json` won't work with windows (for ex. "preprocess"). Building
@@ -223,6 +225,8 @@ export const jalhydDateRev = "2019-05-24";
 export const jalhydVersion = "stable-105-gdfc538b";
 ```
 
+As `mkdocs` does not work, copy `src/assets/docs-fr` folder **from a linux build**.
+
 Compile jalhyd with `tsc --p "src/tsconfig.app.json"`
 
 
@@ -239,3 +243,5 @@ export const nghydVersion = "4.3.0-119-ga6ef812";
 Compile nghyd with `ng build --prod --build-optimizer=false`
 
 Build package with `electron-builder`. Find the generated installer in `/release`.
+
+Running the generated installer will install Cassiopée in `C:\Users\YourUser\AppData\local\Programs\cassiopee`
-- 
GitLab