├── .env.default
├── .gitignore
├── Dockerfile
├── README.md
├── docker-compose.yml
├── image.png
├── nginx-include.conf
├── package-lock.json
├── package.json
├── public
    ├── android-chrome-72x72.png
    ├── apple-touch-icon.png
    ├── browserconfig.xml
    ├── css
    │   ├── bootstrap.min.css
    │   └── global.css
    ├── favicon-16x16.png
    ├── favicon-32x32.png
    ├── images
    │   ├── logo.ai
    │   ├── logo.png
    │   └── logo.svg
    ├── index.html
    ├── mstile-150x150.png
    ├── mstile-310x150.png
    ├── mstile-70x70.png
    ├── safari-pinned-tab.svg
    └── site.webmanifest
├── rollup.config.js
└── src
    ├── App.svelte
    └── main.js
/.env.default:
--------------------------------------------------------------------------------
 1 | DEVICE_ID=888
 2 | MQTT_PROTOCOL=wss
 3 | MQTT_HOST=test.mosquitto.org
 4 | MQTT_PORT=8081
 5 | MQTT_USERNAME=
 6 | MQTT_PASSWORD=
 7 | MQTT_PATH=ws
 8 | MQTT_SUBSCRIBE_TOPIC=/test/#
 9 | MQTT_MAX_MESSAGES=100
10 | DATE_FORMAT="DD.MM.YYYY hh:mm:ss"
11 | 
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | public/build/
 2 | .DS_Store
 3 | 
 4 | # Logs
 5 | logs
 6 | *.log
 7 | npm-debug.log*
 8 | yarn-debug.log*
 9 | yarn-error.log*
10 | 
11 | # Runtime data
12 | pids
13 | *.pid
14 | *.seed
15 | *.pid.lock
16 | 
17 | # Directory for instrumented libs generated by jscoverage/JSCover
18 | lib-cov
19 | 
20 | # Coverage directory used by tools like istanbul
21 | coverage
22 | 
23 | # Dependency directories
24 | node_modules/
25 | jspm_packages/
26 | 
27 | # TypeScript v1 declaration files
28 | typings/
29 | 
30 | # Optional npm cache directory
31 | .npm
32 | 
33 | # Optional eslint cache
34 | .eslintcache
35 | 
36 | # Optional REPL history
37 | .node_repl_history
38 | 
39 | # Output of 'npm pack'
40 | *.tgz
41 | 
42 | # dotenv environment variables file
43 | .env
44 | 
45 | #history
46 | .history
47 | 
48 | *.code-workspace
49 | 
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
 1 | FROM node:12.18-alpine
 2 | 
 3 | RUN npm install -g rollup sirv-cli
 4 | 
 5 | RUN mkdir -p /app
 6 | 
 7 | WORKDIR /app
 8 | 
 9 | ENV NODE_ENV production
10 | 
11 | COPY . .
12 | 
13 | RUN npm install && npm run build
14 | 
15 | EXPOSE 5000
16 | 
17 | ENV HOST=0.0.0.0
18 | 
19 | CMD [ "npm", "start" ]
20 | 
21 | 
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
 1 | 
 2 | # Svelte MQTT Monitor
 3 | 
 4 | 
 5 | 
 6 | ## Demos
 7 | 
 8 | [https://svelte-mqtt-monitor.vercel.app](https://svelte-mqtt-monitor.vercel.app/)
 9 | 
10 | ## Get started
11 | 
12 | ### Requiring
13 | 
14 | - [Node.JS](https://nodejs.org/) installed (not required for docker install)
15 | - MQTT broker with [enabled  MQTT over WebSockets or MQTT over WebSockets Secure](https://www.google.com/webhp?newwindow=1&q=mqtt+over+websockets) (ws or wss)
16 | 
17 | ### Development
18 | 
19 | ```bash
20 | git clone https://github.com/4refr0nt/svelte-mqtt-monitor.git
21 | cd svelte-mqtt-monitor
22 | npm i
23 | cp .env.sample .env
24 | ```
25 | …then edit .env - broker settigs
26 | 
27 | ```bash
28 | nano .env
29 | ```
30 | and run app
31 | 
32 | ```bash
33 | npm run dev
34 | ```
35 | 
36 | ...then open browser link [http://localhost:5000](http://localhost:5000)
37 | 
38 | ### docker install
39 | 
40 | ```bash
41 | git clone https://github.com/4refr0nt/svelte-mqtt-monitor.git
42 | cd svelte-mqtt-monitor
43 | npm i
44 | cp .env.sample .env
45 | ```
46 | …then edit .env - broker connection settings
47 | 
48 | ```bash
49 | nano .env
50 | ```
51 | then run
52 | 
53 | ```bash
54 | npm run build
55 | docker-compose up -d
56 | ```
57 | configure `nginx` or `traefik` as reverse-proxy to `5000` port 
58 | (see example part of config `nginx-include.conf`) or
59 | open browser `http://address:5000`
60 | 
61 | Enjoy!
62 | 
63 | 
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
 1 | version: '3.7'
 2 | services:
 3 |   mqtt-monitor:
 4 |     image: mqtt-monitor
 5 |     container_name: mqtt-monitor
 6 |     restart: unless-stopped
 7 |     build: .
 8 |     ports:
 9 |       - "127.0.0.1:5000:5000"
10 |     volumes:
11 |       - ./:/app
12 |     network_mode: host
--------------------------------------------------------------------------------
/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/image.png
--------------------------------------------------------------------------------
/nginx-include.conf:
--------------------------------------------------------------------------------
 1 |     location /monitor/ {
 2 |         rewrite  ^/monitor/(.*)  /$1 break;
 3 |         proxy_pass http://localhost:5000/;
 4 |         proxy_http_version 1.1;
 5 |         proxy_set_header Upgrade $http_upgrade;
 6 |         proxy_set_header Connection 'upgrade';
 7 |         proxy_set_header Host $host;
 8 |         proxy_cache_bypass $http_upgrade;
 9 |         proxy_set_header X-Real-Ip $remote_addr;
10 |         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11 |         proxy_set_header X-Forwarded-Proto $scheme;
12 |     }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
   1 | {
   2 |   "name": "svelte-app",
   3 |   "version": "1.0.0",
   4 |   "lockfileVersion": 1,
   5 |   "requires": true,
   6 |   "dependencies": {
   7 |     "@babel/code-frame": {
   8 |       "version": "7.10.4",
   9 |       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
  10 |       "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
  11 |       "dev": true,
  12 |       "requires": {
  13 |         "@babel/highlight": "^7.10.4"
  14 |       }
  15 |     },
  16 |     "@babel/helper-validator-identifier": {
  17 |       "version": "7.10.4",
  18 |       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
  19 |       "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
  20 |       "dev": true
  21 |     },
  22 |     "@babel/highlight": {
  23 |       "version": "7.10.4",
  24 |       "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
  25 |       "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
  26 |       "dev": true,
  27 |       "requires": {
  28 |         "@babel/helper-validator-identifier": "^7.10.4",
  29 |         "chalk": "^2.0.0",
  30 |         "js-tokens": "^4.0.0"
  31 |       }
  32 |     },
  33 |     "@polka/url": {
  34 |       "version": "1.0.0-next.11",
  35 |       "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz",
  36 |       "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA=="
  37 |     },
  38 |     "@rollup/plugin-commonjs": {
  39 |       "version": "14.0.0",
  40 |       "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz",
  41 |       "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==",
  42 |       "dev": true,
  43 |       "requires": {
  44 |         "@rollup/pluginutils": "^3.0.8",
  45 |         "commondir": "^1.0.1",
  46 |         "estree-walker": "^1.0.1",
  47 |         "glob": "^7.1.2",
  48 |         "is-reference": "^1.1.2",
  49 |         "magic-string": "^0.25.2",
  50 |         "resolve": "^1.11.0"
  51 |       }
  52 |     },
  53 |     "@rollup/plugin-node-resolve": {
  54 |       "version": "8.4.0",
  55 |       "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz",
  56 |       "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==",
  57 |       "dev": true,
  58 |       "requires": {
  59 |         "@rollup/pluginutils": "^3.1.0",
  60 |         "@types/resolve": "1.17.1",
  61 |         "builtin-modules": "^3.1.0",
  62 |         "deep-freeze": "^0.0.1",
  63 |         "deepmerge": "^4.2.2",
  64 |         "is-module": "^1.0.0",
  65 |         "resolve": "^1.17.0"
  66 |       }
  67 |     },
  68 |     "@rollup/plugin-replace": {
  69 |       "version": "2.3.3",
  70 |       "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz",
  71 |       "integrity": "sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==",
  72 |       "dev": true,
  73 |       "requires": {
  74 |         "@rollup/pluginutils": "^3.0.8",
  75 |         "magic-string": "^0.25.5"
  76 |       }
  77 |     },
  78 |     "@rollup/pluginutils": {
  79 |       "version": "3.1.0",
  80 |       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
  81 |       "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
  82 |       "dev": true,
  83 |       "requires": {
  84 |         "@types/estree": "0.0.39",
  85 |         "estree-walker": "^1.0.1",
  86 |         "picomatch": "^2.2.2"
  87 |       }
  88 |     },
  89 |     "@types/estree": {
  90 |       "version": "0.0.39",
  91 |       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
  92 |       "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
  93 |       "dev": true
  94 |     },
  95 |     "@types/node": {
  96 |       "version": "14.0.23",
  97 |       "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.23.tgz",
  98 |       "integrity": "sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==",
  99 |       "dev": true
 100 |     },
 101 |     "@types/resolve": {
 102 |       "version": "1.17.1",
 103 |       "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
 104 |       "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
 105 |       "dev": true,
 106 |       "requires": {
 107 |         "@types/node": "*"
 108 |       }
 109 |     },
 110 |     "accepts": {
 111 |       "version": "1.3.7",
 112 |       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
 113 |       "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
 114 |       "dev": true,
 115 |       "requires": {
 116 |         "mime-types": "~2.1.24",
 117 |         "negotiator": "0.6.2"
 118 |       }
 119 |     },
 120 |     "acorn": {
 121 |       "version": "7.3.1",
 122 |       "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
 123 |       "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
 124 |       "dev": true,
 125 |       "optional": true
 126 |     },
 127 |     "ansi-regex": {
 128 |       "version": "2.1.1",
 129 |       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
 130 |       "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
 131 |       "dev": true
 132 |     },
 133 |     "ansi-styles": {
 134 |       "version": "3.2.1",
 135 |       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
 136 |       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
 137 |       "dev": true,
 138 |       "requires": {
 139 |         "color-convert": "^1.9.0"
 140 |       }
 141 |     },
 142 |     "anymatch": {
 143 |       "version": "3.1.1",
 144 |       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
 145 |       "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
 146 |       "dev": true,
 147 |       "requires": {
 148 |         "normalize-path": "^3.0.0",
 149 |         "picomatch": "^2.0.4"
 150 |       }
 151 |     },
 152 |     "array-flatten": {
 153 |       "version": "1.1.1",
 154 |       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
 155 |       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
 156 |       "dev": true
 157 |     },
 158 |     "async-limiter": {
 159 |       "version": "1.0.1",
 160 |       "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
 161 |       "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
 162 |     },
 163 |     "balanced-match": {
 164 |       "version": "1.0.0",
 165 |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
 166 |       "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
 167 |     },
 168 |     "base64-js": {
 169 |       "version": "1.3.1",
 170 |       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
 171 |       "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
 172 |     },
 173 |     "big.js": {
 174 |       "version": "5.2.2",
 175 |       "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
 176 |       "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
 177 |       "dev": true
 178 |     },
 179 |     "binary-extensions": {
 180 |       "version": "2.1.0",
 181 |       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
 182 |       "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
 183 |       "dev": true
 184 |     },
 185 |     "bl": {
 186 |       "version": "1.2.3",
 187 |       "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
 188 |       "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
 189 |       "requires": {
 190 |         "readable-stream": "^2.3.5",
 191 |         "safe-buffer": "^5.1.1"
 192 |       }
 193 |     },
 194 |     "body-parser": {
 195 |       "version": "1.19.0",
 196 |       "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
 197 |       "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
 198 |       "dev": true,
 199 |       "requires": {
 200 |         "bytes": "3.1.0",
 201 |         "content-type": "~1.0.4",
 202 |         "debug": "2.6.9",
 203 |         "depd": "~1.1.2",
 204 |         "http-errors": "1.7.2",
 205 |         "iconv-lite": "0.4.24",
 206 |         "on-finished": "~2.3.0",
 207 |         "qs": "6.7.0",
 208 |         "raw-body": "2.4.0",
 209 |         "type-is": "~1.6.17"
 210 |       }
 211 |     },
 212 |     "brace-expansion": {
 213 |       "version": "1.1.11",
 214 |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 215 |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
 216 |       "requires": {
 217 |         "balanced-match": "^1.0.0",
 218 |         "concat-map": "0.0.1"
 219 |       }
 220 |     },
 221 |     "braces": {
 222 |       "version": "3.0.2",
 223 |       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
 224 |       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
 225 |       "dev": true,
 226 |       "requires": {
 227 |         "fill-range": "^7.0.1"
 228 |       }
 229 |     },
 230 |     "buffer-from": {
 231 |       "version": "1.1.1",
 232 |       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
 233 |       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
 234 |     },
 235 |     "builtin-modules": {
 236 |       "version": "3.1.0",
 237 |       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
 238 |       "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
 239 |       "dev": true
 240 |     },
 241 |     "bytes": {
 242 |       "version": "3.1.0",
 243 |       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
 244 |       "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
 245 |       "dev": true
 246 |     },
 247 |     "callback-stream": {
 248 |       "version": "1.1.0",
 249 |       "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz",
 250 |       "integrity": "sha1-RwGlEmbwbgbqpx/BcjOCLYdfSQg=",
 251 |       "requires": {
 252 |         "inherits": "^2.0.1",
 253 |         "readable-stream": "> 1.0.0 < 3.0.0"
 254 |       }
 255 |     },
 256 |     "chalk": {
 257 |       "version": "2.4.2",
 258 |       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
 259 |       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
 260 |       "dev": true,
 261 |       "requires": {
 262 |         "ansi-styles": "^3.2.1",
 263 |         "escape-string-regexp": "^1.0.5",
 264 |         "supports-color": "^5.3.0"
 265 |       }
 266 |     },
 267 |     "chokidar": {
 268 |       "version": "3.4.0",
 269 |       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
 270 |       "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==",
 271 |       "dev": true,
 272 |       "requires": {
 273 |         "anymatch": "~3.1.1",
 274 |         "braces": "~3.0.2",
 275 |         "fsevents": "~2.1.2",
 276 |         "glob-parent": "~5.1.0",
 277 |         "is-binary-path": "~2.1.0",
 278 |         "is-glob": "~4.0.1",
 279 |         "normalize-path": "~3.0.0",
 280 |         "readdirp": "~3.4.0"
 281 |       }
 282 |     },
 283 |     "clsx": {
 284 |       "version": "1.1.1",
 285 |       "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
 286 |       "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
 287 |     },
 288 |     "color-convert": {
 289 |       "version": "1.9.3",
 290 |       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
 291 |       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
 292 |       "dev": true,
 293 |       "requires": {
 294 |         "color-name": "1.1.3"
 295 |       }
 296 |     },
 297 |     "color-name": {
 298 |       "version": "1.1.3",
 299 |       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
 300 |       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
 301 |       "dev": true
 302 |     },
 303 |     "commander": {
 304 |       "version": "2.20.3",
 305 |       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
 306 |       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
 307 |       "dev": true
 308 |     },
 309 |     "commist": {
 310 |       "version": "1.1.0",
 311 |       "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz",
 312 |       "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==",
 313 |       "requires": {
 314 |         "leven": "^2.1.0",
 315 |         "minimist": "^1.1.0"
 316 |       },
 317 |       "dependencies": {
 318 |         "leven": {
 319 |           "version": "2.1.0",
 320 |           "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
 321 |           "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA="
 322 |         }
 323 |       }
 324 |     },
 325 |     "commondir": {
 326 |       "version": "1.0.1",
 327 |       "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
 328 |       "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
 329 |       "dev": true
 330 |     },
 331 |     "concat-map": {
 332 |       "version": "0.0.1",
 333 |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 334 |       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
 335 |     },
 336 |     "concat-stream": {
 337 |       "version": "1.6.2",
 338 |       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
 339 |       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
 340 |       "requires": {
 341 |         "buffer-from": "^1.0.0",
 342 |         "inherits": "^2.0.3",
 343 |         "readable-stream": "^2.2.2",
 344 |         "typedarray": "^0.0.6"
 345 |       }
 346 |     },
 347 |     "console-clear": {
 348 |       "version": "1.1.1",
 349 |       "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz",
 350 |       "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ=="
 351 |     },
 352 |     "content-disposition": {
 353 |       "version": "0.5.3",
 354 |       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
 355 |       "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
 356 |       "dev": true,
 357 |       "requires": {
 358 |         "safe-buffer": "5.1.2"
 359 |       }
 360 |     },
 361 |     "content-type": {
 362 |       "version": "1.0.4",
 363 |       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
 364 |       "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
 365 |       "dev": true
 366 |     },
 367 |     "convert-source-map": {
 368 |       "version": "1.7.0",
 369 |       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
 370 |       "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
 371 |       "dev": true,
 372 |       "optional": true,
 373 |       "requires": {
 374 |         "safe-buffer": "~5.1.1"
 375 |       }
 376 |     },
 377 |     "cookie": {
 378 |       "version": "0.4.0",
 379 |       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
 380 |       "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
 381 |       "dev": true
 382 |     },
 383 |     "cookie-signature": {
 384 |       "version": "1.0.6",
 385 |       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
 386 |       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
 387 |       "dev": true
 388 |     },
 389 |     "core-js": {
 390 |       "version": "3.6.5",
 391 |       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
 392 |       "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
 393 |     },
 394 |     "core-util-is": {
 395 |       "version": "1.0.2",
 396 |       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 397 |       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
 398 |     },
 399 |     "cors": {
 400 |       "version": "2.8.5",
 401 |       "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
 402 |       "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
 403 |       "dev": true,
 404 |       "requires": {
 405 |         "object-assign": "^4",
 406 |         "vary": "^1"
 407 |       }
 408 |     },
 409 |     "cross-env": {
 410 |       "version": "7.0.2",
 411 |       "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz",
 412 |       "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==",
 413 |       "dev": true,
 414 |       "requires": {
 415 |         "cross-spawn": "^7.0.1"
 416 |       }
 417 |     },
 418 |     "cross-spawn": {
 419 |       "version": "7.0.3",
 420 |       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
 421 |       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
 422 |       "dev": true,
 423 |       "requires": {
 424 |         "path-key": "^3.1.0",
 425 |         "shebang-command": "^2.0.0",
 426 |         "which": "^2.0.1"
 427 |       }
 428 |     },
 429 |     "d": {
 430 |       "version": "1.0.1",
 431 |       "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
 432 |       "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
 433 |       "requires": {
 434 |         "es5-ext": "^0.10.50",
 435 |         "type": "^1.0.1"
 436 |       }
 437 |     },
 438 |     "debug": {
 439 |       "version": "2.6.9",
 440 |       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
 441 |       "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
 442 |       "dev": true,
 443 |       "requires": {
 444 |         "ms": "2.0.0"
 445 |       }
 446 |     },
 447 |     "deep-freeze": {
 448 |       "version": "0.0.1",
 449 |       "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz",
 450 |       "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=",
 451 |       "dev": true
 452 |     },
 453 |     "deepmerge": {
 454 |       "version": "4.2.2",
 455 |       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
 456 |       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
 457 |       "dev": true
 458 |     },
 459 |     "depd": {
 460 |       "version": "1.1.2",
 461 |       "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
 462 |       "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
 463 |       "dev": true
 464 |     },
 465 |     "destroy": {
 466 |       "version": "1.0.4",
 467 |       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
 468 |       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
 469 |       "dev": true
 470 |     },
 471 |     "dotenv": {
 472 |       "version": "8.2.0",
 473 |       "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
 474 |       "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
 475 |       "dev": true
 476 |     },
 477 |     "duplexer": {
 478 |       "version": "0.1.1",
 479 |       "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
 480 |       "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
 481 |       "dev": true
 482 |     },
 483 |     "duplexify": {
 484 |       "version": "3.7.1",
 485 |       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
 486 |       "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
 487 |       "requires": {
 488 |         "end-of-stream": "^1.0.0",
 489 |         "inherits": "^2.0.1",
 490 |         "readable-stream": "^2.0.0",
 491 |         "stream-shift": "^1.0.0"
 492 |       }
 493 |     },
 494 |     "ee-first": {
 495 |       "version": "1.1.1",
 496 |       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
 497 |       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
 498 |       "dev": true
 499 |     },
 500 |     "emojis-list": {
 501 |       "version": "3.0.0",
 502 |       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
 503 |       "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
 504 |       "dev": true
 505 |     },
 506 |     "encodeurl": {
 507 |       "version": "1.0.2",
 508 |       "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
 509 |       "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
 510 |       "dev": true
 511 |     },
 512 |     "end-of-stream": {
 513 |       "version": "1.4.4",
 514 |       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
 515 |       "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
 516 |       "requires": {
 517 |         "once": "^1.4.0"
 518 |       }
 519 |     },
 520 |     "es5-ext": {
 521 |       "version": "0.10.53",
 522 |       "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
 523 |       "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
 524 |       "requires": {
 525 |         "es6-iterator": "~2.0.3",
 526 |         "es6-symbol": "~3.1.3",
 527 |         "next-tick": "~1.0.0"
 528 |       }
 529 |     },
 530 |     "es6-iterator": {
 531 |       "version": "2.0.3",
 532 |       "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
 533 |       "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
 534 |       "requires": {
 535 |         "d": "1",
 536 |         "es5-ext": "^0.10.35",
 537 |         "es6-symbol": "^3.1.1"
 538 |       }
 539 |     },
 540 |     "es6-map": {
 541 |       "version": "0.1.5",
 542 |       "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
 543 |       "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
 544 |       "requires": {
 545 |         "d": "1",
 546 |         "es5-ext": "~0.10.14",
 547 |         "es6-iterator": "~2.0.1",
 548 |         "es6-set": "~0.1.5",
 549 |         "es6-symbol": "~3.1.1",
 550 |         "event-emitter": "~0.3.5"
 551 |       }
 552 |     },
 553 |     "es6-promise": {
 554 |       "version": "4.2.8",
 555 |       "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
 556 |       "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
 557 |       "dev": true,
 558 |       "optional": true
 559 |     },
 560 |     "es6-set": {
 561 |       "version": "0.1.5",
 562 |       "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
 563 |       "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
 564 |       "requires": {
 565 |         "d": "1",
 566 |         "es5-ext": "~0.10.14",
 567 |         "es6-iterator": "~2.0.1",
 568 |         "es6-symbol": "3.1.1",
 569 |         "event-emitter": "~0.3.5"
 570 |       },
 571 |       "dependencies": {
 572 |         "es6-symbol": {
 573 |           "version": "3.1.1",
 574 |           "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
 575 |           "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
 576 |           "requires": {
 577 |             "d": "1",
 578 |             "es5-ext": "~0.10.14"
 579 |           }
 580 |         }
 581 |       }
 582 |     },
 583 |     "es6-symbol": {
 584 |       "version": "3.1.3",
 585 |       "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
 586 |       "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
 587 |       "requires": {
 588 |         "d": "^1.0.1",
 589 |         "ext": "^1.1.2"
 590 |       }
 591 |     },
 592 |     "escape-html": {
 593 |       "version": "1.0.3",
 594 |       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
 595 |       "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
 596 |       "dev": true
 597 |     },
 598 |     "escape-string-regexp": {
 599 |       "version": "1.0.5",
 600 |       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
 601 |       "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
 602 |       "dev": true
 603 |     },
 604 |     "estree-walker": {
 605 |       "version": "1.0.1",
 606 |       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
 607 |       "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
 608 |       "dev": true
 609 |     },
 610 |     "etag": {
 611 |       "version": "1.8.1",
 612 |       "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
 613 |       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
 614 |       "dev": true
 615 |     },
 616 |     "event-emitter": {
 617 |       "version": "0.3.5",
 618 |       "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
 619 |       "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
 620 |       "requires": {
 621 |         "d": "1",
 622 |         "es5-ext": "~0.10.14"
 623 |       }
 624 |     },
 625 |     "express": {
 626 |       "version": "4.17.1",
 627 |       "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
 628 |       "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
 629 |       "dev": true,
 630 |       "requires": {
 631 |         "accepts": "~1.3.7",
 632 |         "array-flatten": "1.1.1",
 633 |         "body-parser": "1.19.0",
 634 |         "content-disposition": "0.5.3",
 635 |         "content-type": "~1.0.4",
 636 |         "cookie": "0.4.0",
 637 |         "cookie-signature": "1.0.6",
 638 |         "debug": "2.6.9",
 639 |         "depd": "~1.1.2",
 640 |         "encodeurl": "~1.0.2",
 641 |         "escape-html": "~1.0.3",
 642 |         "etag": "~1.8.1",
 643 |         "finalhandler": "~1.1.2",
 644 |         "fresh": "0.5.2",
 645 |         "merge-descriptors": "1.0.1",
 646 |         "methods": "~1.1.2",
 647 |         "on-finished": "~2.3.0",
 648 |         "parseurl": "~1.3.3",
 649 |         "path-to-regexp": "0.1.7",
 650 |         "proxy-addr": "~2.0.5",
 651 |         "qs": "6.7.0",
 652 |         "range-parser": "~1.2.1",
 653 |         "safe-buffer": "5.1.2",
 654 |         "send": "0.17.1",
 655 |         "serve-static": "1.14.1",
 656 |         "setprototypeof": "1.1.1",
 657 |         "statuses": "~1.5.0",
 658 |         "type-is": "~1.6.18",
 659 |         "utils-merge": "1.0.1",
 660 |         "vary": "~1.1.2"
 661 |       }
 662 |     },
 663 |     "express-history-api-fallback": {
 664 |       "version": "2.2.1",
 665 |       "resolved": "https://registry.npmjs.org/express-history-api-fallback/-/express-history-api-fallback-2.2.1.tgz",
 666 |       "integrity": "sha1-OirSf3vryQ/FM9EQ18bYMJe80Fc=",
 667 |       "dev": true,
 668 |       "optional": true
 669 |     },
 670 |     "express-http-proxy": {
 671 |       "version": "1.6.0",
 672 |       "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-1.6.0.tgz",
 673 |       "integrity": "sha512-7Re6Lepg96NA2wiv7DC5csChAScn4K76/UgYnC71XiITCT1cgGTJUGK6GS0pIixudg3Fbx3Q6mmEW3mZv5tHFQ==",
 674 |       "dev": true,
 675 |       "optional": true,
 676 |       "requires": {
 677 |         "debug": "^3.0.1",
 678 |         "es6-promise": "^4.1.1",
 679 |         "raw-body": "^2.3.0"
 680 |       },
 681 |       "dependencies": {
 682 |         "debug": {
 683 |           "version": "3.2.6",
 684 |           "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
 685 |           "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
 686 |           "dev": true,
 687 |           "optional": true,
 688 |           "requires": {
 689 |             "ms": "^2.1.1"
 690 |           }
 691 |         },
 692 |         "ms": {
 693 |           "version": "2.1.2",
 694 |           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
 695 |           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
 696 |           "dev": true,
 697 |           "optional": true
 698 |         }
 699 |       }
 700 |     },
 701 |     "express-ws": {
 702 |       "version": "4.0.0",
 703 |       "resolved": "https://registry.npmjs.org/express-ws/-/express-ws-4.0.0.tgz",
 704 |       "integrity": "sha512-KEyUw8AwRET2iFjFsI1EJQrJ/fHeGiJtgpYgEWG3yDv4l/To/m3a2GaYfeGyB3lsWdvbesjF5XCMx+SVBgAAYw==",
 705 |       "dev": true,
 706 |       "optional": true,
 707 |       "requires": {
 708 |         "ws": "^5.2.0"
 709 |       },
 710 |       "dependencies": {
 711 |         "ws": {
 712 |           "version": "5.2.2",
 713 |           "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
 714 |           "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
 715 |           "dev": true,
 716 |           "optional": true,
 717 |           "requires": {
 718 |             "async-limiter": "~1.0.0"
 719 |           }
 720 |         }
 721 |       }
 722 |     },
 723 |     "ext": {
 724 |       "version": "1.4.0",
 725 |       "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
 726 |       "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
 727 |       "requires": {
 728 |         "type": "^2.0.0"
 729 |       },
 730 |       "dependencies": {
 731 |         "type": {
 732 |           "version": "2.0.0",
 733 |           "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz",
 734 |           "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow=="
 735 |         }
 736 |       }
 737 |     },
 738 |     "extend": {
 739 |       "version": "3.0.2",
 740 |       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
 741 |       "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
 742 |     },
 743 |     "figures": {
 744 |       "version": "1.7.0",
 745 |       "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
 746 |       "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
 747 |       "dev": true,
 748 |       "requires": {
 749 |         "escape-string-regexp": "^1.0.5",
 750 |         "object-assign": "^4.1.0"
 751 |       }
 752 |     },
 753 |     "fill-range": {
 754 |       "version": "7.0.1",
 755 |       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 756 |       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
 757 |       "dev": true,
 758 |       "requires": {
 759 |         "to-regex-range": "^5.0.1"
 760 |       }
 761 |     },
 762 |     "finalhandler": {
 763 |       "version": "1.1.2",
 764 |       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
 765 |       "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
 766 |       "dev": true,
 767 |       "requires": {
 768 |         "debug": "2.6.9",
 769 |         "encodeurl": "~1.0.2",
 770 |         "escape-html": "~1.0.3",
 771 |         "on-finished": "~2.3.0",
 772 |         "parseurl": "~1.3.3",
 773 |         "statuses": "~1.5.0",
 774 |         "unpipe": "~1.0.0"
 775 |       }
 776 |     },
 777 |     "forwarded": {
 778 |       "version": "0.1.2",
 779 |       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
 780 |       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
 781 |       "dev": true
 782 |     },
 783 |     "fresh": {
 784 |       "version": "0.5.2",
 785 |       "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
 786 |       "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
 787 |       "dev": true
 788 |     },
 789 |     "fs.realpath": {
 790 |       "version": "1.0.0",
 791 |       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 792 |       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
 793 |     },
 794 |     "fsevents": {
 795 |       "version": "2.1.3",
 796 |       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
 797 |       "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
 798 |       "dev": true,
 799 |       "optional": true
 800 |     },
 801 |     "get-port": {
 802 |       "version": "3.2.0",
 803 |       "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
 804 |       "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
 805 |     },
 806 |     "glob": {
 807 |       "version": "7.1.6",
 808 |       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
 809 |       "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
 810 |       "requires": {
 811 |         "fs.realpath": "^1.0.0",
 812 |         "inflight": "^1.0.4",
 813 |         "inherits": "2",
 814 |         "minimatch": "^3.0.4",
 815 |         "once": "^1.3.0",
 816 |         "path-is-absolute": "^1.0.0"
 817 |       }
 818 |     },
 819 |     "glob-parent": {
 820 |       "version": "5.1.1",
 821 |       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
 822 |       "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
 823 |       "dev": true,
 824 |       "requires": {
 825 |         "is-glob": "^4.0.1"
 826 |       }
 827 |     },
 828 |     "glob-stream": {
 829 |       "version": "6.1.0",
 830 |       "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
 831 |       "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
 832 |       "requires": {
 833 |         "extend": "^3.0.0",
 834 |         "glob": "^7.1.1",
 835 |         "glob-parent": "^3.1.0",
 836 |         "is-negated-glob": "^1.0.0",
 837 |         "ordered-read-streams": "^1.0.0",
 838 |         "pumpify": "^1.3.5",
 839 |         "readable-stream": "^2.1.5",
 840 |         "remove-trailing-separator": "^1.0.1",
 841 |         "to-absolute-glob": "^2.0.0",
 842 |         "unique-stream": "^2.0.2"
 843 |       },
 844 |       "dependencies": {
 845 |         "glob-parent": {
 846 |           "version": "3.1.0",
 847 |           "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
 848 |           "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
 849 |           "requires": {
 850 |             "is-glob": "^3.1.0",
 851 |             "path-dirname": "^1.0.0"
 852 |           }
 853 |         },
 854 |         "is-glob": {
 855 |           "version": "3.1.0",
 856 |           "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
 857 |           "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
 858 |           "requires": {
 859 |             "is-extglob": "^2.1.0"
 860 |           }
 861 |         }
 862 |       }
 863 |     },
 864 |     "gzip-size": {
 865 |       "version": "3.0.0",
 866 |       "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz",
 867 |       "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=",
 868 |       "dev": true,
 869 |       "requires": {
 870 |         "duplexer": "^0.1.1"
 871 |       }
 872 |     },
 873 |     "has-ansi": {
 874 |       "version": "2.0.0",
 875 |       "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
 876 |       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
 877 |       "dev": true,
 878 |       "requires": {
 879 |         "ansi-regex": "^2.0.0"
 880 |       }
 881 |     },
 882 |     "has-flag": {
 883 |       "version": "3.0.0",
 884 |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
 885 |       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
 886 |       "dev": true
 887 |     },
 888 |     "help-me": {
 889 |       "version": "1.1.0",
 890 |       "resolved": "https://registry.npmjs.org/help-me/-/help-me-1.1.0.tgz",
 891 |       "integrity": "sha1-jy1QjQYAtKRW2i8IZVbn5cBWo8Y=",
 892 |       "requires": {
 893 |         "callback-stream": "^1.0.2",
 894 |         "glob-stream": "^6.1.0",
 895 |         "through2": "^2.0.1",
 896 |         "xtend": "^4.0.0"
 897 |       }
 898 |     },
 899 |     "http-errors": {
 900 |       "version": "1.7.2",
 901 |       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
 902 |       "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
 903 |       "dev": true,
 904 |       "requires": {
 905 |         "depd": "~1.1.2",
 906 |         "inherits": "2.0.3",
 907 |         "setprototypeof": "1.1.1",
 908 |         "statuses": ">= 1.5.0 < 2",
 909 |         "toidentifier": "1.0.0"
 910 |       },
 911 |       "dependencies": {
 912 |         "inherits": {
 913 |           "version": "2.0.3",
 914 |           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
 915 |           "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
 916 |           "dev": true
 917 |         }
 918 |       }
 919 |     },
 920 |     "iconv-lite": {
 921 |       "version": "0.4.24",
 922 |       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
 923 |       "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
 924 |       "dev": true,
 925 |       "requires": {
 926 |         "safer-buffer": ">= 2.1.2 < 3"
 927 |       }
 928 |     },
 929 |     "inflight": {
 930 |       "version": "1.0.6",
 931 |       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
 932 |       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
 933 |       "requires": {
 934 |         "once": "^1.3.0",
 935 |         "wrappy": "1"
 936 |       }
 937 |     },
 938 |     "inherits": {
 939 |       "version": "2.0.4",
 940 |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
 941 |       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
 942 |     },
 943 |     "ipaddr.js": {
 944 |       "version": "1.9.1",
 945 |       "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
 946 |       "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
 947 |       "dev": true
 948 |     },
 949 |     "is-absolute": {
 950 |       "version": "1.0.0",
 951 |       "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
 952 |       "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
 953 |       "requires": {
 954 |         "is-relative": "^1.0.0",
 955 |         "is-windows": "^1.0.1"
 956 |       }
 957 |     },
 958 |     "is-binary-path": {
 959 |       "version": "2.1.0",
 960 |       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
 961 |       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
 962 |       "dev": true,
 963 |       "requires": {
 964 |         "binary-extensions": "^2.0.0"
 965 |       }
 966 |     },
 967 |     "is-extglob": {
 968 |       "version": "2.1.1",
 969 |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
 970 |       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
 971 |     },
 972 |     "is-glob": {
 973 |       "version": "4.0.1",
 974 |       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
 975 |       "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
 976 |       "dev": true,
 977 |       "requires": {
 978 |         "is-extglob": "^2.1.1"
 979 |       }
 980 |     },
 981 |     "is-module": {
 982 |       "version": "1.0.0",
 983 |       "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
 984 |       "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
 985 |       "dev": true
 986 |     },
 987 |     "is-negated-glob": {
 988 |       "version": "1.0.0",
 989 |       "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
 990 |       "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI="
 991 |     },
 992 |     "is-number": {
 993 |       "version": "7.0.0",
 994 |       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
 995 |       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
 996 |       "dev": true
 997 |     },
 998 |     "is-reference": {
 999 |       "version": "1.2.1",
1000 |       "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
1001 |       "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
1002 |       "dev": true,
1003 |       "requires": {
1004 |         "@types/estree": "*"
1005 |       }
1006 |     },
1007 |     "is-relative": {
1008 |       "version": "1.0.0",
1009 |       "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
1010 |       "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
1011 |       "requires": {
1012 |         "is-unc-path": "^1.0.0"
1013 |       }
1014 |     },
1015 |     "is-unc-path": {
1016 |       "version": "1.0.0",
1017 |       "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
1018 |       "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
1019 |       "requires": {
1020 |         "unc-path-regex": "^0.1.2"
1021 |       }
1022 |     },
1023 |     "is-windows": {
1024 |       "version": "1.0.2",
1025 |       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
1026 |       "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
1027 |     },
1028 |     "isarray": {
1029 |       "version": "1.0.0",
1030 |       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1031 |       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
1032 |     },
1033 |     "isexe": {
1034 |       "version": "2.0.0",
1035 |       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1036 |       "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1037 |       "dev": true
1038 |     },
1039 |     "jest-worker": {
1040 |       "version": "26.1.0",
1041 |       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.1.0.tgz",
1042 |       "integrity": "sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ==",
1043 |       "dev": true,
1044 |       "requires": {
1045 |         "merge-stream": "^2.0.0",
1046 |         "supports-color": "^7.0.0"
1047 |       },
1048 |       "dependencies": {
1049 |         "has-flag": {
1050 |           "version": "4.0.0",
1051 |           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1052 |           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1053 |           "dev": true
1054 |         },
1055 |         "supports-color": {
1056 |           "version": "7.1.0",
1057 |           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
1058 |           "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
1059 |           "dev": true,
1060 |           "requires": {
1061 |             "has-flag": "^4.0.0"
1062 |           }
1063 |         }
1064 |       }
1065 |     },
1066 |     "js-tokens": {
1067 |       "version": "4.0.0",
1068 |       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1069 |       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1070 |       "dev": true
1071 |     },
1072 |     "json-stable-stringify-without-jsonify": {
1073 |       "version": "1.0.1",
1074 |       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1075 |       "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
1076 |     },
1077 |     "json5": {
1078 |       "version": "1.0.1",
1079 |       "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
1080 |       "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
1081 |       "dev": true,
1082 |       "requires": {
1083 |         "minimist": "^1.2.0"
1084 |       }
1085 |     },
1086 |     "kleur": {
1087 |       "version": "3.0.3",
1088 |       "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
1089 |       "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
1090 |     },
1091 |     "livereload": {
1092 |       "version": "0.9.1",
1093 |       "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz",
1094 |       "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==",
1095 |       "dev": true,
1096 |       "requires": {
1097 |         "chokidar": "^3.3.0",
1098 |         "livereload-js": "^3.1.0",
1099 |         "opts": ">= 1.2.0",
1100 |         "ws": "^6.2.1"
1101 |       }
1102 |     },
1103 |     "livereload-js": {
1104 |       "version": "3.2.3",
1105 |       "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.3.tgz",
1106 |       "integrity": "sha512-dXL/WgTGI2K3oeYX/z1lngFXSKtjCB2j7n9WSSluoU6/6+N4LWNoMiCBFNgn8dh3luBn4JBajVSvM5I7Xn6SLA==",
1107 |       "dev": true
1108 |     },
1109 |     "loader-utils": {
1110 |       "version": "1.4.0",
1111 |       "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
1112 |       "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
1113 |       "dev": true,
1114 |       "requires": {
1115 |         "big.js": "^5.2.2",
1116 |         "emojis-list": "^3.0.0",
1117 |         "json5": "^1.0.1"
1118 |       }
1119 |     },
1120 |     "local-access": {
1121 |       "version": "1.0.1",
1122 |       "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz",
1123 |       "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA=="
1124 |     },
1125 |     "lodash.isobject": {
1126 |       "version": "3.0.2",
1127 |       "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
1128 |       "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0="
1129 |     },
1130 |     "lodash.tonumber": {
1131 |       "version": "4.0.3",
1132 |       "resolved": "https://registry.npmjs.org/lodash.tonumber/-/lodash.tonumber-4.0.3.tgz",
1133 |       "integrity": "sha1-C5azGzVnJ5Prf1pj7nkfG56QJdk="
1134 |     },
1135 |     "magic-string": {
1136 |       "version": "0.25.7",
1137 |       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
1138 |       "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
1139 |       "dev": true,
1140 |       "requires": {
1141 |         "sourcemap-codec": "^1.4.4"
1142 |       }
1143 |     },
1144 |     "maxmin": {
1145 |       "version": "2.1.0",
1146 |       "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz",
1147 |       "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=",
1148 |       "dev": true,
1149 |       "requires": {
1150 |         "chalk": "^1.0.0",
1151 |         "figures": "^1.0.1",
1152 |         "gzip-size": "^3.0.0",
1153 |         "pretty-bytes": "^3.0.0"
1154 |       },
1155 |       "dependencies": {
1156 |         "ansi-styles": {
1157 |           "version": "2.2.1",
1158 |           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
1159 |           "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
1160 |           "dev": true
1161 |         },
1162 |         "chalk": {
1163 |           "version": "1.1.3",
1164 |           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1165 |           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1166 |           "dev": true,
1167 |           "requires": {
1168 |             "ansi-styles": "^2.2.1",
1169 |             "escape-string-regexp": "^1.0.2",
1170 |             "has-ansi": "^2.0.0",
1171 |             "strip-ansi": "^3.0.0",
1172 |             "supports-color": "^2.0.0"
1173 |           }
1174 |         },
1175 |         "supports-color": {
1176 |           "version": "2.0.0",
1177 |           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1178 |           "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1179 |           "dev": true
1180 |         }
1181 |       }
1182 |     },
1183 |     "media-typer": {
1184 |       "version": "0.3.0",
1185 |       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1186 |       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
1187 |       "dev": true
1188 |     },
1189 |     "merge-descriptors": {
1190 |       "version": "1.0.1",
1191 |       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1192 |       "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
1193 |       "dev": true
1194 |     },
1195 |     "merge-stream": {
1196 |       "version": "2.0.0",
1197 |       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1198 |       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1199 |       "dev": true
1200 |     },
1201 |     "methods": {
1202 |       "version": "1.1.2",
1203 |       "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1204 |       "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
1205 |       "dev": true
1206 |     },
1207 |     "mime": {
1208 |       "version": "2.4.6",
1209 |       "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
1210 |       "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
1211 |     },
1212 |     "mime-db": {
1213 |       "version": "1.44.0",
1214 |       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
1215 |       "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
1216 |       "dev": true
1217 |     },
1218 |     "mime-types": {
1219 |       "version": "2.1.27",
1220 |       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
1221 |       "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
1222 |       "dev": true,
1223 |       "requires": {
1224 |         "mime-db": "1.44.0"
1225 |       }
1226 |     },
1227 |     "minimatch": {
1228 |       "version": "3.0.4",
1229 |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1230 |       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1231 |       "requires": {
1232 |         "brace-expansion": "^1.1.7"
1233 |       }
1234 |     },
1235 |     "minimist": {
1236 |       "version": "1.2.5",
1237 |       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1238 |       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
1239 |     },
1240 |     "moment": {
1241 |       "version": "2.27.0",
1242 |       "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
1243 |       "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
1244 |     },
1245 |     "mqtt": {
1246 |       "version": "4.1.0",
1247 |       "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.1.0.tgz",
1248 |       "integrity": "sha512-dBihVZzaB8p9G/2ktSfamiaHmMnpCpP2du08317ZuEX1kBAbZOG9aMJQ11EChXnOX3GKUeiZYaSITueceQKT2A==",
1249 |       "requires": {
1250 |         "base64-js": "^1.3.0",
1251 |         "commist": "^1.0.0",
1252 |         "concat-stream": "^1.6.2",
1253 |         "debug": "^4.1.1",
1254 |         "end-of-stream": "^1.4.1",
1255 |         "es6-map": "^0.1.5",
1256 |         "help-me": "^1.0.1",
1257 |         "inherits": "^2.0.3",
1258 |         "minimist": "^1.2.0",
1259 |         "mqtt-packet": "^6.0.0",
1260 |         "pump": "^3.0.0",
1261 |         "readable-stream": "^2.3.6",
1262 |         "reinterval": "^1.1.0",
1263 |         "split2": "^3.1.0",
1264 |         "websocket-stream": "^5.1.2",
1265 |         "xtend": "^4.0.1"
1266 |       },
1267 |       "dependencies": {
1268 |         "debug": {
1269 |           "version": "4.1.1",
1270 |           "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1271 |           "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1272 |           "requires": {
1273 |             "ms": "^2.1.1"
1274 |           }
1275 |         },
1276 |         "ms": {
1277 |           "version": "2.1.2",
1278 |           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1279 |           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1280 |         }
1281 |       }
1282 |     },
1283 |     "mqtt-packet": {
1284 |       "version": "6.3.2",
1285 |       "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.3.2.tgz",
1286 |       "integrity": "sha512-i56+2kN6F57KInGtjjfUXSl4xG8u/zOvfaXFLKFAbBXzWkXOmwcmjaSCBPayf2IQCkQU0+h+S2DizCo3CF6gQA==",
1287 |       "requires": {
1288 |         "bl": "^1.2.2",
1289 |         "debug": "^4.1.1",
1290 |         "inherits": "^2.0.3",
1291 |         "process-nextick-args": "^2.0.0",
1292 |         "safe-buffer": "^5.1.2"
1293 |       },
1294 |       "dependencies": {
1295 |         "debug": {
1296 |           "version": "4.1.1",
1297 |           "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1298 |           "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1299 |           "requires": {
1300 |             "ms": "^2.1.1"
1301 |           }
1302 |         },
1303 |         "ms": {
1304 |           "version": "2.1.2",
1305 |           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1306 |           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1307 |         }
1308 |       }
1309 |     },
1310 |     "mri": {
1311 |       "version": "1.1.5",
1312 |       "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz",
1313 |       "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg=="
1314 |     },
1315 |     "ms": {
1316 |       "version": "2.0.0",
1317 |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1318 |       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1319 |       "dev": true
1320 |     },
1321 |     "negotiator": {
1322 |       "version": "0.6.2",
1323 |       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1324 |       "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
1325 |       "dev": true
1326 |     },
1327 |     "next-tick": {
1328 |       "version": "1.0.0",
1329 |       "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
1330 |       "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
1331 |     },
1332 |     "nollup": {
1333 |       "version": "0.12.2",
1334 |       "resolved": "https://registry.npmjs.org/nollup/-/nollup-0.12.2.tgz",
1335 |       "integrity": "sha512-6woSoPmP06icHfp8D/CAOUXgSBbpm2mh4y1h7WtLCPyYuHnEV3dxIXS+DHsxLPWHs9oFupS2cMoLA1RfhSZ71A==",
1336 |       "dev": true,
1337 |       "optional": true,
1338 |       "requires": {
1339 |         "@rollup/pluginutils": "^3.0.8",
1340 |         "acorn": "^7.0.0",
1341 |         "chokidar": "^3.0.0",
1342 |         "convert-source-map": "^1.5.1",
1343 |         "express": "^4.16.3",
1344 |         "express-history-api-fallback": "^2.2.1",
1345 |         "express-http-proxy": "^1.5.1",
1346 |         "express-ws": "^4.0.0",
1347 |         "magic-string": "^0.24.0",
1348 |         "mime-types": "^2.1.24",
1349 |         "source-map": "^0.5.6"
1350 |       },
1351 |       "dependencies": {
1352 |         "magic-string": {
1353 |           "version": "0.24.1",
1354 |           "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.24.1.tgz",
1355 |           "integrity": "sha512-YBfNxbJiixMzxW40XqJEIldzHyh5f7CZKalo1uZffevyrPEX8Qgo9s0dmcORLHdV47UyvJg8/zD+6hQG3qvJrA==",
1356 |           "dev": true,
1357 |           "optional": true,
1358 |           "requires": {
1359 |             "sourcemap-codec": "^1.4.1"
1360 |           }
1361 |         },
1362 |         "source-map": {
1363 |           "version": "0.5.7",
1364 |           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1365 |           "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1366 |           "dev": true,
1367 |           "optional": true
1368 |         }
1369 |       }
1370 |     },
1371 |     "normalize-path": {
1372 |       "version": "3.0.0",
1373 |       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1374 |       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1375 |       "dev": true
1376 |     },
1377 |     "number-is-nan": {
1378 |       "version": "1.0.1",
1379 |       "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
1380 |       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
1381 |       "dev": true
1382 |     },
1383 |     "object-assign": {
1384 |       "version": "4.1.1",
1385 |       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1386 |       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1387 |       "dev": true
1388 |     },
1389 |     "on-finished": {
1390 |       "version": "2.3.0",
1391 |       "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1392 |       "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1393 |       "dev": true,
1394 |       "requires": {
1395 |         "ee-first": "1.1.1"
1396 |       }
1397 |     },
1398 |     "once": {
1399 |       "version": "1.4.0",
1400 |       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1401 |       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1402 |       "requires": {
1403 |         "wrappy": "1"
1404 |       }
1405 |     },
1406 |     "opts": {
1407 |       "version": "2.0.0",
1408 |       "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.0.tgz",
1409 |       "integrity": "sha512-rPleeyX48sBEc4aj7rAok5dCbvRdYpdbIdSRR4gnIK98a7Rvd4l3wlv4YHQr2mwPQTpKQiw8uipi/WoyItDINg==",
1410 |       "dev": true
1411 |     },
1412 |     "ordered-read-streams": {
1413 |       "version": "1.0.1",
1414 |       "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
1415 |       "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
1416 |       "requires": {
1417 |         "readable-stream": "^2.0.1"
1418 |       }
1419 |     },
1420 |     "parseurl": {
1421 |       "version": "1.3.3",
1422 |       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1423 |       "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1424 |       "dev": true
1425 |     },
1426 |     "path-dirname": {
1427 |       "version": "1.0.2",
1428 |       "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
1429 |       "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
1430 |     },
1431 |     "path-is-absolute": {
1432 |       "version": "1.0.1",
1433 |       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1434 |       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
1435 |     },
1436 |     "path-key": {
1437 |       "version": "3.1.1",
1438 |       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1439 |       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1440 |       "dev": true
1441 |     },
1442 |     "path-parse": {
1443 |       "version": "1.0.6",
1444 |       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1445 |       "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1446 |       "dev": true
1447 |     },
1448 |     "path-to-regexp": {
1449 |       "version": "0.1.7",
1450 |       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1451 |       "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
1452 |       "dev": true
1453 |     },
1454 |     "picomatch": {
1455 |       "version": "2.2.2",
1456 |       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
1457 |       "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
1458 |       "dev": true
1459 |     },
1460 |     "pretty-bytes": {
1461 |       "version": "3.0.1",
1462 |       "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz",
1463 |       "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=",
1464 |       "dev": true,
1465 |       "requires": {
1466 |         "number-is-nan": "^1.0.0"
1467 |       }
1468 |     },
1469 |     "process-nextick-args": {
1470 |       "version": "2.0.1",
1471 |       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1472 |       "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
1473 |     },
1474 |     "proxy-addr": {
1475 |       "version": "2.0.6",
1476 |       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
1477 |       "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
1478 |       "dev": true,
1479 |       "requires": {
1480 |         "forwarded": "~0.1.2",
1481 |         "ipaddr.js": "1.9.1"
1482 |       }
1483 |     },
1484 |     "pump": {
1485 |       "version": "3.0.0",
1486 |       "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
1487 |       "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
1488 |       "requires": {
1489 |         "end-of-stream": "^1.1.0",
1490 |         "once": "^1.3.1"
1491 |       }
1492 |     },
1493 |     "pumpify": {
1494 |       "version": "1.5.1",
1495 |       "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
1496 |       "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
1497 |       "requires": {
1498 |         "duplexify": "^3.6.0",
1499 |         "inherits": "^2.0.3",
1500 |         "pump": "^2.0.0"
1501 |       },
1502 |       "dependencies": {
1503 |         "pump": {
1504 |           "version": "2.0.1",
1505 |           "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
1506 |           "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
1507 |           "requires": {
1508 |             "end-of-stream": "^1.1.0",
1509 |             "once": "^1.3.1"
1510 |           }
1511 |         }
1512 |       }
1513 |     },
1514 |     "qs": {
1515 |       "version": "6.7.0",
1516 |       "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
1517 |       "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
1518 |       "dev": true
1519 |     },
1520 |     "randombytes": {
1521 |       "version": "2.1.0",
1522 |       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1523 |       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1524 |       "dev": true,
1525 |       "requires": {
1526 |         "safe-buffer": "^5.1.0"
1527 |       }
1528 |     },
1529 |     "range-parser": {
1530 |       "version": "1.2.1",
1531 |       "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1532 |       "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1533 |       "dev": true
1534 |     },
1535 |     "raw-body": {
1536 |       "version": "2.4.0",
1537 |       "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
1538 |       "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
1539 |       "dev": true,
1540 |       "requires": {
1541 |         "bytes": "3.1.0",
1542 |         "http-errors": "1.7.2",
1543 |         "iconv-lite": "0.4.24",
1544 |         "unpipe": "1.0.0"
1545 |       }
1546 |     },
1547 |     "readable-stream": {
1548 |       "version": "2.3.7",
1549 |       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
1550 |       "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
1551 |       "requires": {
1552 |         "core-util-is": "~1.0.0",
1553 |         "inherits": "~2.0.3",
1554 |         "isarray": "~1.0.0",
1555 |         "process-nextick-args": "~2.0.0",
1556 |         "safe-buffer": "~5.1.1",
1557 |         "string_decoder": "~1.1.1",
1558 |         "util-deprecate": "~1.0.1"
1559 |       }
1560 |     },
1561 |     "readdirp": {
1562 |       "version": "3.4.0",
1563 |       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
1564 |       "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
1565 |       "dev": true,
1566 |       "requires": {
1567 |         "picomatch": "^2.2.1"
1568 |       }
1569 |     },
1570 |     "reinterval": {
1571 |       "version": "1.1.0",
1572 |       "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
1573 |       "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc="
1574 |     },
1575 |     "remove-trailing-separator": {
1576 |       "version": "1.1.0",
1577 |       "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
1578 |       "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
1579 |     },
1580 |     "require-relative": {
1581 |       "version": "0.8.7",
1582 |       "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
1583 |       "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
1584 |       "dev": true
1585 |     },
1586 |     "resolve": {
1587 |       "version": "1.17.0",
1588 |       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
1589 |       "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
1590 |       "dev": true,
1591 |       "requires": {
1592 |         "path-parse": "^1.0.6"
1593 |       }
1594 |     },
1595 |     "rollup": {
1596 |       "version": "2.22.0",
1597 |       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.22.0.tgz",
1598 |       "integrity": "sha512-TNuj5gQTwMu3hcM65HcBTx62N04/7v+4LRH6HOWe497hG0ic5RRfe+Vr88km8XfeApd/AIIQtVfRVNHk92Knmg==",
1599 |       "dev": true,
1600 |       "requires": {
1601 |         "fsevents": "~2.1.2"
1602 |       }
1603 |     },
1604 |     "rollup-plugin-analyzer": {
1605 |       "version": "3.3.0",
1606 |       "resolved": "https://registry.npmjs.org/rollup-plugin-analyzer/-/rollup-plugin-analyzer-3.3.0.tgz",
1607 |       "integrity": "sha512-zUPGitW4usmZcVa0nKecRvw3odtXgnxdCben9Hx1kxVoR3demek8RU9tmRG/R35hnRPQTb7wEsYEe3GUcjxIMA==",
1608 |       "dev": true
1609 |     },
1610 |     "rollup-plugin-bundle-size": {
1611 |       "version": "1.0.3",
1612 |       "resolved": "https://registry.npmjs.org/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz",
1613 |       "integrity": "sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==",
1614 |       "dev": true,
1615 |       "requires": {
1616 |         "chalk": "^1.1.3",
1617 |         "maxmin": "^2.1.0"
1618 |       },
1619 |       "dependencies": {
1620 |         "ansi-styles": {
1621 |           "version": "2.2.1",
1622 |           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
1623 |           "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
1624 |           "dev": true
1625 |         },
1626 |         "chalk": {
1627 |           "version": "1.1.3",
1628 |           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
1629 |           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
1630 |           "dev": true,
1631 |           "requires": {
1632 |             "ansi-styles": "^2.2.1",
1633 |             "escape-string-regexp": "^1.0.2",
1634 |             "has-ansi": "^2.0.0",
1635 |             "strip-ansi": "^3.0.0",
1636 |             "supports-color": "^2.0.0"
1637 |           }
1638 |         },
1639 |         "supports-color": {
1640 |           "version": "2.0.0",
1641 |           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1642 |           "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
1643 |           "dev": true
1644 |         }
1645 |       }
1646 |     },
1647 |     "rollup-plugin-hot": {
1648 |       "version": "0.1.0",
1649 |       "resolved": "https://registry.npmjs.org/rollup-plugin-hot/-/rollup-plugin-hot-0.1.0.tgz",
1650 |       "integrity": "sha512-bmeH8Hls40nstmwIq6EPKBG5yHOdvcSjONIijDxLQ+8vK15jJp/9nM+TPX0Xmoq5IiV4lVEyqmgQnat3GOr8Lg==",
1651 |       "dev": true,
1652 |       "requires": {
1653 |         "cors": "^2.8.5",
1654 |         "express": "^4.17.1",
1655 |         "mime-types": "^2.1.26",
1656 |         "rollup-plugin-hot-nollup": "^0.1.0",
1657 |         "rollup-pluginutils": "^2.8.2",
1658 |         "ws": "^7.1.2"
1659 |       },
1660 |       "dependencies": {
1661 |         "ws": {
1662 |           "version": "7.3.1",
1663 |           "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
1664 |           "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
1665 |           "dev": true
1666 |         }
1667 |       }
1668 |     },
1669 |     "rollup-plugin-hot-nollup": {
1670 |       "version": "0.1.1",
1671 |       "resolved": "https://registry.npmjs.org/rollup-plugin-hot-nollup/-/rollup-plugin-hot-nollup-0.1.1.tgz",
1672 |       "integrity": "sha512-x+SCqvHQKJ+SfiFM4JxaR4ZwuUYN+RTQ6pIUu34SpSC13e4p/dNS8kRLQY9t6ZHcJGvvB0dZkD/udDT4OXXoQA==",
1673 |       "dev": true,
1674 |       "requires": {
1675 |         "@rollup/pluginutils": "^3.1.0"
1676 |       }
1677 |     },
1678 |     "rollup-plugin-livereload": {
1679 |       "version": "1.3.0",
1680 |       "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.3.0.tgz",
1681 |       "integrity": "sha512-abyqXaB21+nFHo+vJULBqfzNx6zXABC19UyvqgDfdoxR/8pFAd041GO+GIUe8ZYC2DbuMUmioh1Lvbk14YLZgw==",
1682 |       "dev": true,
1683 |       "requires": {
1684 |         "livereload": "^0.9.1"
1685 |       }
1686 |     },
1687 |     "rollup-plugin-svelte": {
1688 |       "version": "5.2.3",
1689 |       "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.2.3.tgz",
1690 |       "integrity": "sha512-513vOht9A93OV7fvmpIq8mD1JFgTZ5LidmpULKM2Od9P1l8oI5KwvO32fwCnASuVJS1EkRfvCnS7vKQ8DF4srg==",
1691 |       "dev": true,
1692 |       "requires": {
1693 |         "require-relative": "^0.8.7",
1694 |         "rollup-pluginutils": "^2.8.2",
1695 |         "sourcemap-codec": "^1.4.8"
1696 |       }
1697 |     },
1698 |     "rollup-plugin-svelte-hot": {
1699 |       "version": "0.10.0",
1700 |       "resolved": "https://registry.npmjs.org/rollup-plugin-svelte-hot/-/rollup-plugin-svelte-hot-0.10.0.tgz",
1701 |       "integrity": "sha512-taHP/kS4GnJTeJ3nXCqerOVKh6mEGXffTR6XYzd+WkXCyAJADFrWjExFYshV54GHyKv69Gdf7eGBMIL6OWSPaQ==",
1702 |       "dev": true,
1703 |       "requires": {
1704 |         "nollup": ">=0.8.4",
1705 |         "require-relative": "^0.8.7",
1706 |         "rollup-plugin-hot-nollup": "^0.1.0",
1707 |         "rollup-pluginutils": "^2.8.2",
1708 |         "sourcemap-codec": "^1.4.8",
1709 |         "svelte-hmr": "^0.10.1"
1710 |       }
1711 |     },
1712 |     "rollup-plugin-terser": {
1713 |       "version": "6.1.0",
1714 |       "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz",
1715 |       "integrity": "sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw==",
1716 |       "dev": true,
1717 |       "requires": {
1718 |         "@babel/code-frame": "^7.8.3",
1719 |         "jest-worker": "^26.0.0",
1720 |         "serialize-javascript": "^3.0.0",
1721 |         "terser": "^4.7.0"
1722 |       }
1723 |     },
1724 |     "rollup-pluginutils": {
1725 |       "version": "2.8.2",
1726 |       "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
1727 |       "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
1728 |       "dev": true,
1729 |       "requires": {
1730 |         "estree-walker": "^0.6.1"
1731 |       },
1732 |       "dependencies": {
1733 |         "estree-walker": {
1734 |           "version": "0.6.1",
1735 |           "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
1736 |           "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
1737 |           "dev": true
1738 |         }
1739 |       }
1740 |     },
1741 |     "sade": {
1742 |       "version": "1.7.3",
1743 |       "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.3.tgz",
1744 |       "integrity": "sha512-m4BctppMvJ60W1dXnHq7jMmFe3hPJZDAH85kQ3ACTo7XZNVUuTItCQ+2HfyaMeV5cKrbw7l4vD/6We3GBxvdJw==",
1745 |       "requires": {
1746 |         "mri": "^1.1.0"
1747 |       }
1748 |     },
1749 |     "safe-buffer": {
1750 |       "version": "5.1.2",
1751 |       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1752 |       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1753 |     },
1754 |     "safer-buffer": {
1755 |       "version": "2.1.2",
1756 |       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1757 |       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1758 |       "dev": true
1759 |     },
1760 |     "semiver": {
1761 |       "version": "1.1.0",
1762 |       "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz",
1763 |       "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg=="
1764 |     },
1765 |     "send": {
1766 |       "version": "0.17.1",
1767 |       "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1768 |       "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1769 |       "dev": true,
1770 |       "requires": {
1771 |         "debug": "2.6.9",
1772 |         "depd": "~1.1.2",
1773 |         "destroy": "~1.0.4",
1774 |         "encodeurl": "~1.0.2",
1775 |         "escape-html": "~1.0.3",
1776 |         "etag": "~1.8.1",
1777 |         "fresh": "0.5.2",
1778 |         "http-errors": "~1.7.2",
1779 |         "mime": "1.6.0",
1780 |         "ms": "2.1.1",
1781 |         "on-finished": "~2.3.0",
1782 |         "range-parser": "~1.2.1",
1783 |         "statuses": "~1.5.0"
1784 |       },
1785 |       "dependencies": {
1786 |         "mime": {
1787 |           "version": "1.6.0",
1788 |           "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1789 |           "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1790 |           "dev": true
1791 |         },
1792 |         "ms": {
1793 |           "version": "2.1.1",
1794 |           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1795 |           "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
1796 |           "dev": true
1797 |         }
1798 |       }
1799 |     },
1800 |     "serialize-javascript": {
1801 |       "version": "3.1.0",
1802 |       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
1803 |       "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
1804 |       "dev": true,
1805 |       "requires": {
1806 |         "randombytes": "^2.1.0"
1807 |       }
1808 |     },
1809 |     "serve-static": {
1810 |       "version": "1.14.1",
1811 |       "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1812 |       "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1813 |       "dev": true,
1814 |       "requires": {
1815 |         "encodeurl": "~1.0.2",
1816 |         "escape-html": "~1.0.3",
1817 |         "parseurl": "~1.3.3",
1818 |         "send": "0.17.1"
1819 |       }
1820 |     },
1821 |     "setprototypeof": {
1822 |       "version": "1.1.1",
1823 |       "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1824 |       "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
1825 |       "dev": true
1826 |     },
1827 |     "shebang-command": {
1828 |       "version": "2.0.0",
1829 |       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1830 |       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1831 |       "dev": true,
1832 |       "requires": {
1833 |         "shebang-regex": "^3.0.0"
1834 |       }
1835 |     },
1836 |     "shebang-regex": {
1837 |       "version": "3.0.0",
1838 |       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1839 |       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1840 |       "dev": true
1841 |     },
1842 |     "sirv": {
1843 |       "version": "1.0.1",
1844 |       "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.1.tgz",
1845 |       "integrity": "sha512-5prQxJFybxXkI6fGffgiJgnbMmcdGWd2K5NH+yw4zF5GIZCb2PdCb9+1qr1Y+ntNJsIRvJ6hnR+NlI9vdrRL2Q==",
1846 |       "requires": {
1847 |         "@polka/url": "^1.0.0-next.9",
1848 |         "mime": "^2.3.1",
1849 |         "totalist": "^1.0.0"
1850 |       }
1851 |     },
1852 |     "sirv-cli": {
1853 |       "version": "1.0.3",
1854 |       "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.3.tgz",
1855 |       "integrity": "sha512-pLWMreVMKvK/7Zwdi/8AMjVPaOhkW24a6GRsXtLbvgvbZNHjAb0J8vs3x86ES5radO06AxGRVp8oMWbuf+ExTw==",
1856 |       "requires": {
1857 |         "console-clear": "^1.1.0",
1858 |         "get-port": "^3.2.0",
1859 |         "kleur": "^3.0.0",
1860 |         "local-access": "^1.0.1",
1861 |         "sade": "^1.6.0",
1862 |         "semiver": "^1.0.0",
1863 |         "sirv": "^1.0.1",
1864 |         "tinydate": "^1.0.0"
1865 |       }
1866 |     },
1867 |     "source-map": {
1868 |       "version": "0.6.1",
1869 |       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1870 |       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1871 |       "dev": true
1872 |     },
1873 |     "source-map-support": {
1874 |       "version": "0.5.19",
1875 |       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
1876 |       "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
1877 |       "dev": true,
1878 |       "requires": {
1879 |         "buffer-from": "^1.0.0",
1880 |         "source-map": "^0.6.0"
1881 |       }
1882 |     },
1883 |     "sourcemap-codec": {
1884 |       "version": "1.4.8",
1885 |       "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1886 |       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1887 |       "dev": true
1888 |     },
1889 |     "split2": {
1890 |       "version": "3.1.1",
1891 |       "resolved": "https://registry.npmjs.org/split2/-/split2-3.1.1.tgz",
1892 |       "integrity": "sha512-emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q==",
1893 |       "requires": {
1894 |         "readable-stream": "^3.0.0"
1895 |       },
1896 |       "dependencies": {
1897 |         "readable-stream": {
1898 |           "version": "3.6.0",
1899 |           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
1900 |           "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
1901 |           "requires": {
1902 |             "inherits": "^2.0.3",
1903 |             "string_decoder": "^1.1.1",
1904 |             "util-deprecate": "^1.0.1"
1905 |           }
1906 |         }
1907 |       }
1908 |     },
1909 |     "statuses": {
1910 |       "version": "1.5.0",
1911 |       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1912 |       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
1913 |       "dev": true
1914 |     },
1915 |     "stream-shift": {
1916 |       "version": "1.0.1",
1917 |       "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
1918 |       "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
1919 |     },
1920 |     "string_decoder": {
1921 |       "version": "1.1.1",
1922 |       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1923 |       "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1924 |       "requires": {
1925 |         "safe-buffer": "~5.1.0"
1926 |       }
1927 |     },
1928 |     "strip-ansi": {
1929 |       "version": "3.0.1",
1930 |       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1931 |       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1932 |       "dev": true,
1933 |       "requires": {
1934 |         "ansi-regex": "^2.0.0"
1935 |       }
1936 |     },
1937 |     "supports-color": {
1938 |       "version": "5.5.0",
1939 |       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1940 |       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1941 |       "dev": true,
1942 |       "requires": {
1943 |         "has-flag": "^3.0.0"
1944 |       }
1945 |     },
1946 |     "svelte": {
1947 |       "version": "3.24.0",
1948 |       "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.24.0.tgz",
1949 |       "integrity": "sha512-VFXom6EP2DK83kxy4ZlBbaZklSbZIrpNH3oNXlPYHJUuW4q1OuAr3ZoYbfIVTVYPDgrI7Yq0gQcOhDlAtO4qfw==",
1950 |       "dev": true
1951 |     },
1952 |     "svelte-dev-helper": {
1953 |       "version": "1.1.9",
1954 |       "resolved": "https://registry.npmjs.org/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz",
1955 |       "integrity": "sha1-fRh9tcbNu9ZNdaMvkbiZi94yc8M=",
1956 |       "dev": true
1957 |     },
1958 |     "svelte-hmr": {
1959 |       "version": "0.10.1",
1960 |       "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.10.1.tgz",
1961 |       "integrity": "sha512-WRKVeR+iRsDzyM0nH+Q9TchnVV+WfeOoJNxqhnGuFmO01ZvnxDfWXD4UvbWdrtGUe/ijPK8erFqQMAHkNvPSww==",
1962 |       "dev": true
1963 |     },
1964 |     "svelte-icons": {
1965 |       "version": "2.1.0",
1966 |       "resolved": "https://registry.npmjs.org/svelte-icons/-/svelte-icons-2.1.0.tgz",
1967 |       "integrity": "sha512-rHPQjweEc9fGSnvM0/4gA3pDHwyZyYsC5KhttCZRhSMJfLttJST5Uq0B16Czhw+HQ+HbSOk8kLigMlPs7gZtfg=="
1968 |     },
1969 |     "svelte-loader": {
1970 |       "version": "2.13.6",
1971 |       "resolved": "https://registry.npmjs.org/svelte-loader/-/svelte-loader-2.13.6.tgz",
1972 |       "integrity": "sha512-7uf7ZQdPAl+lwb1ldUYJFY/raZRUCuaNx7lMJ+F16jrVwN1+c35C2pBMGIY0mCqdKm5sm45jqELJJLGM3UG9Pw==",
1973 |       "dev": true,
1974 |       "requires": {
1975 |         "loader-utils": "^1.1.0",
1976 |         "svelte-dev-helper": "^1.1.9"
1977 |       }
1978 |     },
1979 |     "svelte-watch": {
1980 |       "version": "1.1.0",
1981 |       "resolved": "https://registry.npmjs.org/svelte-watch/-/svelte-watch-1.1.0.tgz",
1982 |       "integrity": "sha512-StKuun6xUALj517hMqFrJEKmm7taRba4xNH4xaEp+nOb8VUIvdgyhJ4LpNWIQqpjMENyKZWxK11Ec3SS+/65wA==",
1983 |       "dev": true
1984 |     },
1985 |     "sveltestrap": {
1986 |       "version": "3.5.0",
1987 |       "resolved": "https://registry.npmjs.org/sveltestrap/-/sveltestrap-3.5.0.tgz",
1988 |       "integrity": "sha512-5fGj3W/f2hPQ3BhYLOG9WHsXacokAQ7k2x3msBeVk0sVizXdWRMp57ase8UnMncuKFzdcUMX3odmhoCWXubayg==",
1989 |       "requires": {
1990 |         "clsx": "^1.0.4",
1991 |         "lodash.isobject": "^3.0.2",
1992 |         "lodash.tonumber": "^4.0.3"
1993 |       }
1994 |     },
1995 |     "terser": {
1996 |       "version": "4.8.0",
1997 |       "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
1998 |       "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
1999 |       "dev": true,
2000 |       "requires": {
2001 |         "commander": "^2.20.0",
2002 |         "source-map": "~0.6.1",
2003 |         "source-map-support": "~0.5.12"
2004 |       }
2005 |     },
2006 |     "through2": {
2007 |       "version": "2.0.5",
2008 |       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
2009 |       "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
2010 |       "requires": {
2011 |         "readable-stream": "~2.3.6",
2012 |         "xtend": "~4.0.1"
2013 |       }
2014 |     },
2015 |     "through2-filter": {
2016 |       "version": "3.0.0",
2017 |       "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
2018 |       "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
2019 |       "requires": {
2020 |         "through2": "~2.0.0",
2021 |         "xtend": "~4.0.0"
2022 |       }
2023 |     },
2024 |     "tinydate": {
2025 |       "version": "1.3.0",
2026 |       "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz",
2027 |       "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w=="
2028 |     },
2029 |     "to-absolute-glob": {
2030 |       "version": "2.0.2",
2031 |       "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
2032 |       "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
2033 |       "requires": {
2034 |         "is-absolute": "^1.0.0",
2035 |         "is-negated-glob": "^1.0.0"
2036 |       }
2037 |     },
2038 |     "to-regex-range": {
2039 |       "version": "5.0.1",
2040 |       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2041 |       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2042 |       "dev": true,
2043 |       "requires": {
2044 |         "is-number": "^7.0.0"
2045 |       }
2046 |     },
2047 |     "toidentifier": {
2048 |       "version": "1.0.0",
2049 |       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
2050 |       "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
2051 |       "dev": true
2052 |     },
2053 |     "totalist": {
2054 |       "version": "1.1.0",
2055 |       "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
2056 |       "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g=="
2057 |     },
2058 |     "type": {
2059 |       "version": "1.2.0",
2060 |       "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
2061 |       "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
2062 |     },
2063 |     "type-is": {
2064 |       "version": "1.6.18",
2065 |       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
2066 |       "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
2067 |       "dev": true,
2068 |       "requires": {
2069 |         "media-typer": "0.3.0",
2070 |         "mime-types": "~2.1.24"
2071 |       }
2072 |     },
2073 |     "typedarray": {
2074 |       "version": "0.0.6",
2075 |       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
2076 |       "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
2077 |     },
2078 |     "ultron": {
2079 |       "version": "1.1.1",
2080 |       "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
2081 |       "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
2082 |     },
2083 |     "unc-path-regex": {
2084 |       "version": "0.1.2",
2085 |       "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
2086 |       "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
2087 |     },
2088 |     "unique-stream": {
2089 |       "version": "2.3.1",
2090 |       "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
2091 |       "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
2092 |       "requires": {
2093 |         "json-stable-stringify-without-jsonify": "^1.0.1",
2094 |         "through2-filter": "^3.0.0"
2095 |       }
2096 |     },
2097 |     "unpipe": {
2098 |       "version": "1.0.0",
2099 |       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2100 |       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
2101 |       "dev": true
2102 |     },
2103 |     "util-deprecate": {
2104 |       "version": "1.0.2",
2105 |       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2106 |       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
2107 |     },
2108 |     "utils-merge": {
2109 |       "version": "1.0.1",
2110 |       "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2111 |       "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
2112 |       "dev": true
2113 |     },
2114 |     "vary": {
2115 |       "version": "1.1.2",
2116 |       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2117 |       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
2118 |       "dev": true
2119 |     },
2120 |     "websocket-stream": {
2121 |       "version": "5.5.2",
2122 |       "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.2.tgz",
2123 |       "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==",
2124 |       "requires": {
2125 |         "duplexify": "^3.5.1",
2126 |         "inherits": "^2.0.1",
2127 |         "readable-stream": "^2.3.3",
2128 |         "safe-buffer": "^5.1.2",
2129 |         "ws": "^3.2.0",
2130 |         "xtend": "^4.0.0"
2131 |       },
2132 |       "dependencies": {
2133 |         "ws": {
2134 |           "version": "3.3.3",
2135 |           "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
2136 |           "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
2137 |           "requires": {
2138 |             "async-limiter": "~1.0.0",
2139 |             "safe-buffer": "~5.1.0",
2140 |             "ultron": "~1.1.0"
2141 |           }
2142 |         }
2143 |       }
2144 |     },
2145 |     "which": {
2146 |       "version": "2.0.2",
2147 |       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2148 |       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2149 |       "dev": true,
2150 |       "requires": {
2151 |         "isexe": "^2.0.0"
2152 |       }
2153 |     },
2154 |     "wrappy": {
2155 |       "version": "1.0.2",
2156 |       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2157 |       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
2158 |     },
2159 |     "ws": {
2160 |       "version": "6.2.1",
2161 |       "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
2162 |       "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
2163 |       "dev": true,
2164 |       "requires": {
2165 |         "async-limiter": "~1.0.0"
2166 |       }
2167 |     },
2168 |     "xtend": {
2169 |       "version": "4.0.2",
2170 |       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
2171 |       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
2172 |     }
2173 |   }
2174 | }
2175 | 
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "svelte-app",
 3 |   "version": "1.0.0",
 4 |   "private": true,
 5 |   "license": "MIT",
 6 |   "scripts": {
 7 |     "build": "rollup -c",
 8 |     "dev": "rollup -c -w",
 9 |     "start": "sirv public",
10 |     "sb": "start-storybook"
11 |   },
12 |   "devDependencies": {
13 |     "@rollup/plugin-commonjs": "^14.0.0",
14 |     "@rollup/plugin-node-resolve": "^8.4.0",
15 |     "@rollup/plugin-replace": "^2.3.3",
16 |     "cross-env": "^7.0.2",
17 |     "dotenv": "^8.2.0",
18 |     "rollup": "^2.22.0",
19 |     "rollup-plugin-analyzer": "^3.3.0",
20 |     "rollup-plugin-bundle-size": "^1.0.3",
21 |     "rollup-plugin-hot": "^0.1.0",
22 |     "rollup-plugin-livereload": "^1.3.0",
23 |     "rollup-plugin-svelte": "^5.2.3",
24 |     "rollup-plugin-svelte-hot": "^0.10.0",
25 |     "rollup-plugin-terser": "^6.1.0",
26 |     "svelte": "^3.24.0",
27 |     "svelte-loader": "^2.13.6",
28 |     "svelte-watch": "^1.1.0"
29 |   },
30 |   "dependencies": {
31 |     "core-js": "^3.6.5",
32 |     "moment": "^2.27.0",
33 |     "mqtt": "^4.1.0",
34 |     "sirv-cli": "^1.0.3",
35 |     "svelte-icons": "^2.1.0",
36 |     "sveltestrap": "^3.5.0"
37 |   }
38 | }
39 | 
--------------------------------------------------------------------------------
/public/android-chrome-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/android-chrome-72x72.png
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/4refr0nt/svelte-mqtt-monitor/b53862814f779a21b00d4a75163fdbadf731e748/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/browserconfig.xml:
--------------------------------------------------------------------------------
 1 | 
 2 | 
| Enviroment variable270 | | Value271 | | 
|---|---|
| DEVICE ID276 | | {DEVICE_ID}277 | | 
| MQTT PROTOCOL280 | | {MQTT_PROTOCOL}281 | | 
| MQTT HOST284 | | {MQTT_HOST}285 | | 
| MQTT PORT288 | | {MQTT_PORT}289 | | 
| MQTT USERNAME292 | | {MQTT_USERNAME}293 | | 
| MQTT PASSWORD296 | | ******297 | | 
| MQTT PATH300 | | {MQTT_PATH}301 | | 
| MQTT SUBSCRIBE TOPIC304 | | {MQTT_SUBSCRIBE_TOPIC}305 | | 
| MQTT MAX MESSAGES308 | | {MQTT_MAX_MESSAGES}309 | | 
| DATE FORMAT312 | | {date_format}313 | | 
353 |               {@html message.colored}
354 |             
355 |