diff --git a/.gitignore b/.gitignore
index 5097b74..2042c2b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,12 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+
+# elm
+elm-stuff
+repl-temp-*
+
+# this file will be built.
+*/michelaben/index.js
+
+*/michelaben/node_modules
diff --git a/Dockerfile b/Dockerfile
index 3ca8b6c..5221bc7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,15 +1,27 @@
-# stage1 - build react app first
+# stage 1 - build react and elm apps first
FROM node:20.5.1-alpine as build
+
+RUN apk update &&\
+ apk --no-cache add curl &&\
+ curl -sL https://github.com/elm/compiler/releases/download/0.19.1/binary-for-linux-64-bit.gz -o /tmp/elm.gz &&\
+ gunzip /tmp/elm.gz &&\
+ mv /tmp/elm /usr/local/bin/elm &&\
+ chmod +x /usr/local/bin/elm &&\
+ apk del curl
+
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY ./package.json /app/
RUN npm install
COPY . /app
RUN npm run build
+WORKDIR /app/src/michelaben
+RUN elm make src/Main.elm --output=index.js
# stage 2 - build the final image and copy the react build files
FROM nginx:1.25.1-alpine
COPY --from=build /app/build /usr/share/nginx/html
+COPY --from=build /app/src/michelaben /usr/share/nginx/html/michelaben
RUN rm /etc/nginx/conf.d/default.conf
COPY config/nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80
diff --git a/README.md b/README.md
index bfcbb92..724003d 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
`docker pull pa4kev/portfolio-reactjs-full`
if required, run certbot to set the certificates.
-`docker run -it --rm -p 80:80 --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly --standalone --break-my-certs -d matsubara.nl -d www.matsubara.nl -d pa4kev.nl -d www.pa4kev.nl`
+`docker run -it --rm -p 80:80 --name certbot -v "/etc/letsencrypt:/etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly --standalone --break-my-certs -d matsubara.nl -d www.matsubara.nl -d pa4kev.nl -d www.pa4kev.nl -d michelaben.nl -d www.michelaben.nl`
`docker run -d --name react -p 80:80 -p 443:443 -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt -v /var/www/html:/var/www/html pa4kev/portfolio-reactjs-full`
@@ -47,6 +47,33 @@ Update all dependancies: `npm update`
---
+`elm init`
+
+`npm init -y`
+
+`elm install mdgriffith/elm-ui`
+
+`elm install elm-community/random-extra`
+
+Add to `package.json`
+```
+"scripts": {
+ "dev": "elm-live src/Main.elm -- --debug --output=index.js",
+},
+"devDependencies": {
+ "elm-live": "^4.0.2"
+}
+```
+
+`npm install`
+
+You can now run for development:
+`npm run dev`
+
+`elm make src/Main.elm --output=index.js`
+
+---
+
## Documentation
[Create React App](https://github.com/facebook/create-react-app)
diff --git a/config/nginx/nginx.conf b/config/nginx/nginx.conf
index ae356af..64f196c 100644
--- a/config/nginx/nginx.conf
+++ b/config/nginx/nginx.conf
@@ -1,3 +1,5 @@
+# matsubara.nl
+
server {
server_name matsubara.nl www.matsubara.nl;
listen 80;
@@ -38,3 +40,44 @@ server {
root /var/www/certbot;
}
}
+
+# michelaben.nl
+
+server {
+ server_name michelaben.nl www.michelaben.nl;
+ listen 80;
+ listen [::]:80;
+
+ return 301 https://$host$request_uri;
+}
+
+server {
+ server_name michelaben.nl www.michelaben.nl;
+ server_tokens off;
+
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+
+ # These two directives define the paths to the TLS certificate and secret key.
+ # These will be provisioned using Certbot and mounted into the Nginx container in the next step.
+ ssl_certificate /etc/letsencrypt/live/matsubara.nl/fullchain.pem;
+ ssl_certificate_key /etc/letsencrypt/live/matsubara.nl/privkey.pem;
+
+ location / {
+ root /usr/share/nginx/html/michelaben; # Update the path to your specific directory
+ index index.html;
+
+ # Redirect all requests to index.html
+ try_files $uri /index.html;
+ }
+
+ error_page 500 502 503 504 /50x.html;
+
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+ location /.well-known/acme-challenge/ {
+ root /var/www/certbot;
+ }
+}
diff --git a/src/michelaben/elm.json b/src/michelaben/elm.json
new file mode 100644
index 0000000..b9a40c2
--- /dev/null
+++ b/src/michelaben/elm.json
@@ -0,0 +1,25 @@
+{
+ "type": "application",
+ "source-directories": [
+ "src"
+ ],
+ "elm-version": "0.19.1",
+ "dependencies": {
+ "direct": {
+ "elm/browser": "1.0.2",
+ "elm/core": "1.0.5",
+ "elm/html": "1.0.0",
+ "mdgriffith/elm-ui": "1.1.8"
+ },
+ "indirect": {
+ "elm/json": "1.1.3",
+ "elm/time": "1.0.0",
+ "elm/url": "1.0.0",
+ "elm/virtual-dom": "1.0.3"
+ }
+ },
+ "test-dependencies": {
+ "direct": {},
+ "indirect": {}
+ }
+}
\ No newline at end of file
diff --git a/src/michelaben/images/elm-icon.webp b/src/michelaben/images/elm-icon.webp
new file mode 100644
index 0000000..623bf7c
Binary files /dev/null and b/src/michelaben/images/elm-icon.webp differ
diff --git a/src/michelaben/images/michel-aben.webp b/src/michelaben/images/michel-aben.webp
new file mode 100644
index 0000000..2d93373
Binary files /dev/null and b/src/michelaben/images/michel-aben.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-1.webp b/src/michelaben/images/tekeningen/michael-aben-1.webp
new file mode 100644
index 0000000..379631b
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-1.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-10.webp b/src/michelaben/images/tekeningen/michael-aben-10.webp
new file mode 100644
index 0000000..b12ca96
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-10.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-11.webp b/src/michelaben/images/tekeningen/michael-aben-11.webp
new file mode 100644
index 0000000..ecd0bd1
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-11.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-12.webp b/src/michelaben/images/tekeningen/michael-aben-12.webp
new file mode 100644
index 0000000..bf04397
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-12.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-13.webp b/src/michelaben/images/tekeningen/michael-aben-13.webp
new file mode 100644
index 0000000..5ae5538
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-13.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-14.webp b/src/michelaben/images/tekeningen/michael-aben-14.webp
new file mode 100644
index 0000000..8e8c03c
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-14.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-15.webp b/src/michelaben/images/tekeningen/michael-aben-15.webp
new file mode 100644
index 0000000..77a11c7
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-15.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-16.webp b/src/michelaben/images/tekeningen/michael-aben-16.webp
new file mode 100644
index 0000000..92384f6
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-16.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-17.webp b/src/michelaben/images/tekeningen/michael-aben-17.webp
new file mode 100644
index 0000000..0578f51
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-17.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-18.webp b/src/michelaben/images/tekeningen/michael-aben-18.webp
new file mode 100644
index 0000000..d113f7c
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-18.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-19.webp b/src/michelaben/images/tekeningen/michael-aben-19.webp
new file mode 100644
index 0000000..e6e771c
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-19.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-2.webp b/src/michelaben/images/tekeningen/michael-aben-2.webp
new file mode 100644
index 0000000..232a25a
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-2.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-20.webp b/src/michelaben/images/tekeningen/michael-aben-20.webp
new file mode 100644
index 0000000..d6152f8
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-20.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-21.webp b/src/michelaben/images/tekeningen/michael-aben-21.webp
new file mode 100644
index 0000000..58854ad
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-21.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-22.webp b/src/michelaben/images/tekeningen/michael-aben-22.webp
new file mode 100644
index 0000000..a5d2468
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-22.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-23.webp b/src/michelaben/images/tekeningen/michael-aben-23.webp
new file mode 100644
index 0000000..b7dad60
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-23.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-24.webp b/src/michelaben/images/tekeningen/michael-aben-24.webp
new file mode 100644
index 0000000..0feae1d
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-24.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-25.webp b/src/michelaben/images/tekeningen/michael-aben-25.webp
new file mode 100644
index 0000000..14b898c
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-25.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-26.webp b/src/michelaben/images/tekeningen/michael-aben-26.webp
new file mode 100644
index 0000000..d2bc822
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-26.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-27.webp b/src/michelaben/images/tekeningen/michael-aben-27.webp
new file mode 100644
index 0000000..029033e
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-27.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-28.webp b/src/michelaben/images/tekeningen/michael-aben-28.webp
new file mode 100644
index 0000000..bdf5669
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-28.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-29.webp b/src/michelaben/images/tekeningen/michael-aben-29.webp
new file mode 100644
index 0000000..0c88d29
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-29.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-3.webp b/src/michelaben/images/tekeningen/michael-aben-3.webp
new file mode 100644
index 0000000..5b34731
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-3.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-30.webp b/src/michelaben/images/tekeningen/michael-aben-30.webp
new file mode 100644
index 0000000..6f45ce8
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-30.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-31.webp b/src/michelaben/images/tekeningen/michael-aben-31.webp
new file mode 100644
index 0000000..198b95e
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-31.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-32.webp b/src/michelaben/images/tekeningen/michael-aben-32.webp
new file mode 100644
index 0000000..5481fe5
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-32.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-33.webp b/src/michelaben/images/tekeningen/michael-aben-33.webp
new file mode 100644
index 0000000..5e87f29
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-33.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-34.webp b/src/michelaben/images/tekeningen/michael-aben-34.webp
new file mode 100644
index 0000000..3552f36
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-34.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-35.webp b/src/michelaben/images/tekeningen/michael-aben-35.webp
new file mode 100644
index 0000000..1f2d98e
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-35.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-36.webp b/src/michelaben/images/tekeningen/michael-aben-36.webp
new file mode 100644
index 0000000..b3dbb1d
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-36.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-37.webp b/src/michelaben/images/tekeningen/michael-aben-37.webp
new file mode 100644
index 0000000..413cd43
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-37.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-38.webp b/src/michelaben/images/tekeningen/michael-aben-38.webp
new file mode 100644
index 0000000..7d1c506
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-38.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-39.webp b/src/michelaben/images/tekeningen/michael-aben-39.webp
new file mode 100644
index 0000000..2949aa2
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-39.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-4.webp b/src/michelaben/images/tekeningen/michael-aben-4.webp
new file mode 100644
index 0000000..f58685b
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-4.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-40.webp b/src/michelaben/images/tekeningen/michael-aben-40.webp
new file mode 100644
index 0000000..7e04970
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-40.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-41.webp b/src/michelaben/images/tekeningen/michael-aben-41.webp
new file mode 100644
index 0000000..6487466
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-41.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-42.webp b/src/michelaben/images/tekeningen/michael-aben-42.webp
new file mode 100644
index 0000000..ec15ac2
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-42.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-43.webp b/src/michelaben/images/tekeningen/michael-aben-43.webp
new file mode 100644
index 0000000..266dac1
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-43.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-44.webp b/src/michelaben/images/tekeningen/michael-aben-44.webp
new file mode 100644
index 0000000..77748e1
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-44.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-45.webp b/src/michelaben/images/tekeningen/michael-aben-45.webp
new file mode 100644
index 0000000..4b9819f
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-45.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-46.webp b/src/michelaben/images/tekeningen/michael-aben-46.webp
new file mode 100644
index 0000000..1775721
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-46.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-47.webp b/src/michelaben/images/tekeningen/michael-aben-47.webp
new file mode 100644
index 0000000..fe06651
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-47.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-48.webp b/src/michelaben/images/tekeningen/michael-aben-48.webp
new file mode 100644
index 0000000..16fbc3b
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-48.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-49.webp b/src/michelaben/images/tekeningen/michael-aben-49.webp
new file mode 100644
index 0000000..f874c2d
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-49.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-5.webp b/src/michelaben/images/tekeningen/michael-aben-5.webp
new file mode 100644
index 0000000..df5d72a
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-5.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-50.webp b/src/michelaben/images/tekeningen/michael-aben-50.webp
new file mode 100644
index 0000000..1caf312
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-50.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-51.webp b/src/michelaben/images/tekeningen/michael-aben-51.webp
new file mode 100644
index 0000000..31ed0d2
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-51.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-52.webp b/src/michelaben/images/tekeningen/michael-aben-52.webp
new file mode 100644
index 0000000..d99ab5c
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-52.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-53.webp b/src/michelaben/images/tekeningen/michael-aben-53.webp
new file mode 100644
index 0000000..53e603d
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-53.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-54.webp b/src/michelaben/images/tekeningen/michael-aben-54.webp
new file mode 100644
index 0000000..7bfb532
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-54.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-55.webp b/src/michelaben/images/tekeningen/michael-aben-55.webp
new file mode 100644
index 0000000..0b2bbec
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-55.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-6.webp b/src/michelaben/images/tekeningen/michael-aben-6.webp
new file mode 100644
index 0000000..d6db6cf
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-6.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-7.webp b/src/michelaben/images/tekeningen/michael-aben-7.webp
new file mode 100644
index 0000000..96bf897
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-7.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-8.webp b/src/michelaben/images/tekeningen/michael-aben-8.webp
new file mode 100644
index 0000000..ad04dbf
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-8.webp differ
diff --git a/src/michelaben/images/tekeningen/michael-aben-9.webp b/src/michelaben/images/tekeningen/michael-aben-9.webp
new file mode 100644
index 0000000..302b8da
Binary files /dev/null and b/src/michelaben/images/tekeningen/michael-aben-9.webp differ
diff --git a/src/michelaben/index.html b/src/michelaben/index.html
new file mode 100644
index 0000000..b02de8c
--- /dev/null
+++ b/src/michelaben/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ Michel Aben
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/michelaben/package-lock.json b/src/michelaben/package-lock.json
new file mode 100644
index 0000000..3982f01
--- /dev/null
+++ b/src/michelaben/package-lock.json
@@ -0,0 +1,971 @@
+{
+ "name": "michelaben",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "michelaben",
+ "version": "1.0.0",
+ "license": "ISC",
+ "devDependencies": {
+ "elm-live": "^4.0.2"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "dev": true
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz",
+ "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==",
+ "dev": true,
+ "dependencies": {
+ "anymatch": "^3.0.1",
+ "braces": "^3.0.2",
+ "glob-parent": "^5.0.0",
+ "is-binary-path": "^2.1.0",
+ "is-glob": "^4.0.1",
+ "normalize-path": "^3.0.0",
+ "readdirp": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.0.6"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ },
+ "node_modules/crocks": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/crocks/-/crocks-0.12.1.tgz",
+ "integrity": "sha512-2qCRJwBmPlRQXzd50k9gt9PaItultOP8lj/cKSH2Eai9aeBuNqAnDuyolAm9TGn6Pw/4BgbxtPJLU1S+tQ4WMQ==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.0.1.tgz",
+ "integrity": "sha512-77q+/Kkp43OBZUppmezGBqwB1qdjGk8y1Kb6zdPaYVz8qKFRdGpL6TRLqJhlhG5RhtGkNnKaeEYCt7b/vtYteg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==",
+ "dev": true
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/elm-hot": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.1.4.tgz",
+ "integrity": "sha512-qPDP/o/Fkifriaxaf3E7hHFB5L6Ijihyg8is4A6xna6/h/zebUiNssbQrxywI2oxNUkr6W/leEu/WlIC1tmVnw==",
+ "dev": true
+ },
+ "node_modules/elm-live": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/elm-live/-/elm-live-4.0.2.tgz",
+ "integrity": "sha512-4I3UvJxF6MubC14VsgtV11B0zBxaaKtdKKsWquoaa5a3UHBIGW83qgTnt/NxOj4omOLfupaftmDaE4yRMTgTcw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.1",
+ "chokidar": "3.0.2",
+ "commander": "2.17.1",
+ "crocks": "0.12.1",
+ "cross-spawn": "5.0.1",
+ "elm-hot": "1.1.4",
+ "finalhandler": "1.1.2",
+ "http-proxy": "1.17.0",
+ "internal-ip": "4.3.0",
+ "mime": "2.4.3",
+ "open": "6.4.0",
+ "pem": "1.14.2",
+ "serve-static": "1.14.1",
+ "ws": "7.1.1"
+ },
+ "bin": {
+ "elm-live": "bin/elm-live.js"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/es6-promisify": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz",
+ "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==",
+ "dev": true
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
+ "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+ "dev": true
+ },
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+ "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
+ "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+ "dev": true,
+ "dependencies": {
+ "eventemitter3": "^3.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dev": true,
+ "dependencies": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/md5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
+ "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
+ "dev": true,
+ "dependencies": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "~1.1.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz",
+ "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dev": true,
+ "dependencies": {
+ "is-wsl": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pem": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.2.tgz",
+ "integrity": "sha512-TOnPtq3ZFnCniOZ+rka4pk8UIze9xG1qI+wNE7EmkiR/cg+53uVvk5QbkWZ7M6RsuOxzz62FW1hlAobJr/lTOA==",
+ "dev": true,
+ "dependencies": {
+ "es6-promisify": "^6.0.0",
+ "md5": "^2.2.1",
+ "os-tmpdir": "^1.0.1",
+ "which": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "dev": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "node_modules/serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/ws": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.1.tgz",
+ "integrity": "sha512-o41D/WmDeca0BqYhsr3nJzQyg9NF5X8l/UdnFNux9cS3lwB+swm8qGWX5rn+aD6xfBU3rGmtHij7g7x6LxFU3A==",
+ "dev": true,
+ "dependencies": {
+ "async-limiter": "^1.0.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ }
+ }
+}
diff --git a/src/michelaben/package.json b/src/michelaben/package.json
new file mode 100644
index 0000000..809b94d
--- /dev/null
+++ b/src/michelaben/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "michelaben",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "dev": "elm-live src/Main.elm -- --debug --output=index.js",
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "elm-live": "^4.0.2"
+ }
+}
\ No newline at end of file
diff --git a/src/michelaben/src/Main.elm b/src/michelaben/src/Main.elm
new file mode 100644
index 0000000..dee044d
--- /dev/null
+++ b/src/michelaben/src/Main.elm
@@ -0,0 +1,176 @@
+module Main exposing (..)
+
+import Browser
+import Element as E
+import Element.Font as EF exposing (alignRight)
+import Element.Region as ER
+import Html as H exposing (Html, br, div, hr, p)
+import Html.Attributes as HA
+import String exposing (fromInt)
+
+
+type alias ImageInfo =
+ { src : String
+ , description : String
+ }
+
+
+type alias Model =
+ { backgroundColour : Maybe E.Color
+ , images : List ImageInfo
+ }
+
+
+type Msg
+ = MsgChangeColours
+
+
+modelInit : Model
+modelInit =
+ { backgroundColour = Nothing --Just E.rgb255 0xEE 0xEE 0xFF
+ , images = generateImageList 1 55
+ }
+
+
+generateImageList : Int -> Int -> List ImageInfo
+generateImageList start end =
+ List.range start end
+ |> List.map (\n -> { src = "images/tekeningen/michael-aben-" ++ fromInt n ++ ".webp", description = "" })
+
+
+main : Program () Model Msg
+main =
+ Browser.sandbox
+ { init = modelInit
+ , view = viewLayout
+ , update = update
+ }
+
+
+viewLayout : Model -> Html Msg
+viewLayout model =
+ E.layoutWith
+ { options =
+ [ E.focusStyle
+ { backgroundColor = model.backgroundColour
+ , borderColor = Nothing
+ , shadow = Nothing
+ }
+ ]
+ }
+ [ E.padding 22
+ ]
+ (viewArtImages model)
+
+
+viewTitle : E.Element msg
+viewTitle =
+ E.paragraph
+ [ EF.bold
+ , EF.size 28
+ , ER.heading 1
+ ]
+ [ E.text "Michaël Aben's Tekeningen: Een Creatieve Wereld Ontdekt."
+ ]
+
+
+text1 : String
+text1 =
+ "Welkom in de wereld van Michaël Aben. Onze \"ome Michel\" genoot altijd erg veel van tekenen en het gebruik van kleuren om iets moois te maken. Hij had een grote liefde voor geometrische vormen zoals pyramides. Ook tekende hij graag gebouwen en soms gezichten. Hier vind je een collectie van zijn passie."
+
+
+viewContent : E.Element msg
+viewContent =
+ let
+ elmLink =
+ E.link [] { label = E.text "Elm", url = "https://elm-lang.org/" }
+
+ matsubaraLink =
+ E.link [] { label = E.text "Kevin Matsubara", url = "https://matsubara.nl/" }
+ in
+ E.column
+ [ E.paddingXY 0 10
+ , ER.mainContent
+ ]
+ [ E.paragraph
+ [ EF.size 18
+ , E.paddingXY 0 20
+ ]
+ [ E.text text1 ]
+ , E.paragraph
+ [ EF.size 18
+ , E.paddingXY 0 10
+ ]
+ [ E.text "Mensen zoals jij, kleuren het leven net iets mooier." ]
+ , E.paragraph
+ [ EF.size 14
+ , E.paddingXY 0 10
+ ]
+ [ E.text "☼ 5 december 1947", E.html (br [] []), E.text "† 19 oktober 2023" ]
+ , E.paragraph
+ [ EF.size 18
+ , E.paddingXY 0 10
+ ]
+ [ E.text "Aan alle mooie liedjes komt ooit eens een eind. Een kort en mooi verhaal, dat plotseling verdwijnt." ]
+ , E.paragraph
+ [ EF.size 18
+ , E.paddingXY 0 10
+ ]
+ [ E.text "Onthou vooral het ritme en neurie het of zing, zo blijft dat mooiste lied een top herinnering." ]
+ , E.paragraph
+ [ EF.size 14
+ , E.paddingXY 0 5
+ ]
+ [ E.html (hr [] []), E.text "Deze website is gemaakt in ", elmLink, E.text " door ", matsubaraLink, E.text "." ]
+ ]
+
+
+update : Msg -> Model -> Model
+update _ model =
+ model
+
+
+elmIcon : E.Element msg
+elmIcon =
+ let
+ icon =
+ E.image
+ []
+ { src = "images/elm-icon.webp"
+ , description = "elm icon"
+ }
+ in
+ E.link [ E.centerX ]
+ { label = icon, url = "https://elm-lang.org/" }
+
+
+mainImage : E.Element msg
+mainImage =
+ E.image
+ [ E.paddingXY 0 20
+ , E.centerX
+ ]
+ { src = "images/michel-aben.webp", description = "Michel Aben" }
+
+
+viewArtImages : Model -> E.Element msg
+viewArtImages model =
+ E.column []
+ (viewTitle
+ :: viewContent
+ :: elmIcon
+ :: mainImage
+ :: List.map viewArtImage model.images
+ )
+
+
+viewArtImage : ImageInfo -> E.Element msg
+viewArtImage imageInfo =
+ E.image
+ [ E.width (E.maximum 600 E.fill)
+ , E.centerX
+ , E.paddingXY 0 20
+ ]
+ { src = imageInfo.src
+ , description = imageInfo.description
+ }