From 43c10c80fd8d9bd29bee26f33ac18ed6ba5af42c Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Mon, 27 Sep 2021 21:02:32 +0200
Subject: [PATCH] playing with frontend emberjs

---
 app/components/nav-bar.hbs    |   19 -
 app/components/nodes.hbs      |    1 -
 app/index.html                |    1 +
 app/models/folder.js          |    3 -
 app/models/node.js            |    5 +-
 app/routes/folders.js         |   11 -
 app/routes/index.js           |   15 +-
 app/styles/app.scss           |    2 +
 app/templates/application.hbs |   33 +-
 app/templates/index.hbs       |    1 +
 package-lock.json             | 1532 +++++++++++++++++++++++++++++++--
 package.json                  |    2 +
 public/api/documents/10.json  |    9 +
 public/api/documents/11.json  |    9 +
 public/api/documents/12.json  |    9 +
 public/api/documents/8.json   |    9 +
 public/api/documents/9.json   |    9 +
 public/api/nodes.json         |   11 +-
 public/api/nodes/4.json       |    7 +
 public/api/nodes/7.json       |   50 ++
 public/assets/favicon.ico     |  Bin 0 -> 3902 bytes
 21 files changed, 1606 insertions(+), 132 deletions(-)
 delete mode 100644 app/components/nav-bar.hbs
 delete mode 100644 app/routes/folders.js
 create mode 100644 public/api/documents/10.json
 create mode 100644 public/api/documents/11.json
 create mode 100644 public/api/documents/12.json
 create mode 100644 public/api/documents/8.json
 create mode 100644 public/api/documents/9.json
 create mode 100644 public/api/nodes/7.json
 create mode 100644 public/assets/favicon.ico

diff --git a/app/components/nav-bar.hbs b/app/components/nav-bar.hbs
deleted file mode 100644
index bfe4c88..0000000
--- a/app/components/nav-bar.hbs
+++ /dev/null
@@ -1,19 +0,0 @@
-<nav class="menu">
-  <LinkTo @route="index" class="menu-index">
-    <h1>Papermerge</h1>
-  </LinkTo>
-  <LinkTo @route="tags" class="menu-contact">
-    Tags
-  </LinkTo>
-  <LinkTo @route="automates" class="menu-contact">
-    Automates
-  </LinkTo>
-  <div class="links">
-    <LinkTo @route="about" class="menu-about">
-      About
-    </LinkTo>
-    <LinkTo @route="contact" class="menu-contact">
-      Contact
-    </LinkTo>
-  </div>
-</nav>
\ No newline at end of file
diff --git a/app/components/nodes.hbs b/app/components/nodes.hbs
index 54e1dcd..6816f96 100644
--- a/app/components/nodes.hbs
+++ b/app/components/nodes.hbs
@@ -1,4 +1,3 @@
-All Nodes
 <div class="nodes">
   <ul class="results">
       {{#each @nodes as |node|}}
diff --git a/app/index.html b/app/index.html
index 099e221..a2f38ca 100644
--- a/app/index.html
+++ b/app/index.html
@@ -11,6 +11,7 @@
 
     <link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css">
     <link integrity="" rel="stylesheet" href="{{rootURL}}assets/papermerge.css">
+    <link rel="shortcut icon" type="image/png" href="{{rootURL}}assets/favicon.ico"/>
 
     {{content-for "head-footer"}}
   </head>
diff --git a/app/models/folder.js b/app/models/folder.js
index 8722631..dc8ba89 100644
--- a/app/models/folder.js
+++ b/app/models/folder.js
@@ -2,7 +2,4 @@ import { attr } from '@ember-data/model';
 import NodeModel from './node';
 
 export default class FolderModel extends NodeModel {
-  get type() {
-    return 'folder';
-  }
 }
diff --git a/app/models/node.js b/app/models/node.js
index bdcf1ab..9fd260e 100644
--- a/app/models/node.js
+++ b/app/models/node.js
@@ -2,14 +2,15 @@ import Model, { attr, hasMany, belongsTo } from '@ember-data/model';
 
 export default class NodeModel extends Model {
   @attr title;
+  @attr model;
   @hasMany('node',  { polymorphic: true }) children;
   @belongsTo('node', { inverse: 'children' }) parent;
 
   get is_folder() {
-    return this.type == "folder";
+    return this.type === "folder" || this.model === "folder";
   }
 
   get is_document() {
-    return this.type == "document";
+    return this.type === "document" || this.model === "document";
   }
 }
diff --git a/app/routes/folders.js b/app/routes/folders.js
deleted file mode 100644
index cd4664d..0000000
--- a/app/routes/folders.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import Route from '@ember/routing/route';
-import { inject as service } from '@ember/service';
-
-
-export default class FolderRoute extends Route {
-  @service store;
-
-  async model(params) {
-    return this.store.findAll('folder');
-  }
-}
diff --git a/app/routes/index.js b/app/routes/index.js
index 0da2a49..781afc2 100644
--- a/app/routes/index.js
+++ b/app/routes/index.js
@@ -1,21 +1,10 @@
 import Route from '@ember/routing/route';
 import { inject as service } from '@ember/service';
-import { Node } from "../models/node";
+
 
 export default class IndexRoute extends Route {
   @service store;
-
   async model() {
-    let response = await fetch('/api/nodes.json');
-    let { data } = await response.json();
-    let ret;
-
-    ret = data.map((model) => {
-      let { id, type, attributes } = model;
-
-      return this.store.createRecord('node',{ id, type, ...attributes });
-    });
-
-    return ret;
+    return this.store.findAll('node');
   }
 }
diff --git a/app/styles/app.scss b/app/styles/app.scss
index 43c1fe8..8ade6dc 100644
--- a/app/styles/app.scss
+++ b/app/styles/app.scss
@@ -1,3 +1,5 @@
+@import "ember-bootstrap/bootstrap";
+
 .results.list > .item {
     padding: 0.25rem 1rem;
     margin: 0.5rem 1rem;
diff --git a/app/templates/application.hbs b/app/templates/application.hbs
index 9fb3ba2..61a2674 100644
--- a/app/templates/application.hbs
+++ b/app/templates/application.hbs
@@ -1,6 +1,29 @@
-<div class="container">
-  <NavBar />
-  <div class="body">
-    {{outlet}}
+<BsNavbar as |navbar|>
+  <div class="navbar-header">
+    <navbar.toggle />
+    <a class="navbar-brand" href="/">Papermerge</a>
   </div>
-</div>
\ No newline at end of file
+  <navbar.content>
+    <navbar.nav as |nav|>
+      <nav.item>
+        <nav.linkTo @route="index">Home</nav.linkTo>
+      </nav.item>
+      <nav.item>
+        <nav.linkTo @route="tags">Tags</nav.linkTo>
+      </nav.item>
+      <nav.item>
+        <nav.linkTo @route="automates">Automates</nav.linkTo>
+      </nav.item>
+      <nav.item>
+        <nav.linkTo @route="about">About</nav.linkTo>
+      </nav.item>
+      <nav.item>
+        <nav.linkTo @route="contact">Contact</nav.linkTo>
+      </nav.item>
+    </navbar.nav>
+  </navbar.content>
+</BsNavbar>
+
+<div class="container">
+  {{outlet}}
+</div>
diff --git a/app/templates/index.hbs b/app/templates/index.hbs
index 09e8691..fbf2b1f 100644
--- a/app/templates/index.hbs
+++ b/app/templates/index.hbs
@@ -1,2 +1,3 @@
+
 <Breadcrumb />
 <Nodes @nodes={{@model}} />
diff --git a/package-lock.json b/package-lock.json
index 0e48ba1..1ec670d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2392,6 +2392,35 @@
         }
       }
     },
+    "@ember-decorators/component": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@ember-decorators/component/-/component-6.1.1.tgz",
+      "integrity": "sha512-Cj8tY/c0MC/rsipqsiWLh3YVN72DK92edPYamD/HzvftwzC6oDwawWk8RmStiBnG9PG/vntAt41l3S7HSSA+1Q==",
+      "dev": true,
+      "requires": {
+        "@ember-decorators/utils": "^6.1.1",
+        "ember-cli-babel": "^7.1.3"
+      }
+    },
+    "@ember-decorators/object": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@ember-decorators/object/-/object-6.1.1.tgz",
+      "integrity": "sha512-cb4CNR9sRoA31J3FCOFLDuR9ztM4wO9w1WlS4JeNRS7Z69SlB/XSXB/vplA3i9OOaXEy/zKWbu5ndZrHz0gvLw==",
+      "dev": true,
+      "requires": {
+        "@ember-decorators/utils": "^6.1.1",
+        "ember-cli-babel": "^7.1.3"
+      }
+    },
+    "@ember-decorators/utils": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@ember-decorators/utils/-/utils-6.1.1.tgz",
+      "integrity": "sha512-0KqnoeoLKb6AyoSU65TRF5T85wmS4uDn06oARddwNPxxf/lt5jQlh41uX3W7V/fWL9tPu8x1L1Vvpc80MN1+YA==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.1.3"
+      }
+    },
     "@ember-template-lint/todo-utils": {
       "version": "10.0.0",
       "resolved": "https://registry.npmjs.org/@ember-template-lint/todo-utils/-/todo-utils-10.0.0.tgz",
@@ -2466,6 +2495,16 @@
         "silent-error": "^1.1.1"
       }
     },
+    "@ember/render-modifiers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@ember/render-modifiers/-/render-modifiers-1.0.2.tgz",
+      "integrity": "sha512-6tEnHl5+62NTSAG2mwhGMFPhUrJQjoVqV+slsn+rlTknm2Zik+iwxBQEbwaiQOU1FUYxkS8RWcieovRNMR8inQ==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.10.0",
+        "ember-modifier-manager-polyfill": "^1.1.0"
+      }
+    },
     "@ember/string": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/@ember/string/-/string-3.0.0.tgz",
@@ -2761,6 +2800,112 @@
         "semver": "^7.3.2"
       }
     },
+    "@embroider/shared-internals": {
+      "version": "0.41.0",
+      "resolved": "https://registry.npmjs.org/@embroider/shared-internals/-/shared-internals-0.41.0.tgz",
+      "integrity": "sha512-fiqUVB6cfh2UBEFE4yhT5EzagkZ1Q26+OhBV0nJszFEJZx4DqVIb3pxSSZ8P+HhpxuJsQ2XpMA/j02ZPFZfbdQ==",
+      "dev": true,
+      "requires": {
+        "ember-rfc176-data": "^0.3.17",
+        "fs-extra": "^7.0.1",
+        "lodash": "^4.17.10",
+        "pkg-up": "^3.1.0",
+        "resolve-package-path": "^1.2.2",
+        "semver": "^7.3.2",
+        "typescript-memoize": "^1.0.0-alpha.3"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+          "dev": true,
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "p-try": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+          "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+          "dev": true
+        },
+        "pkg-up": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+          "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
+        "resolve-package-path": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/resolve-package-path/-/resolve-package-path-1.2.7.tgz",
+          "integrity": "sha512-fVEKHGeK85bGbVFuwO9o1aU0n3vqQGrezPc51JGu9UTXpFQfWq5qCeKxyaRUSvephs+06c5j5rPq/dzHGEo8+Q==",
+          "dev": true,
+          "requires": {
+            "path-root": "^0.1.1",
+            "resolve": "^1.10.0"
+          }
+        }
+      }
+    },
+    "@embroider/util": {
+      "version": "0.41.0",
+      "resolved": "https://registry.npmjs.org/@embroider/util/-/util-0.41.0.tgz",
+      "integrity": "sha512-ytA3J/YfQh7FEUEBwz3ezTqQNm/S5et5rZw3INBIy4Ak4x0NXV/VXLjyL8mv3txL8fGknZTBdXEhDsHUKIq8SQ==",
+      "dev": true,
+      "requires": {
+        "@embroider/macros": "0.41.0",
+        "broccoli-funnel": "^3.0.5",
+        "ember-cli-babel": "^7.23.1"
+      },
+      "dependencies": {
+        "@embroider/macros": {
+          "version": "0.41.0",
+          "resolved": "https://registry.npmjs.org/@embroider/macros/-/macros-0.41.0.tgz",
+          "integrity": "sha512-QISzwEEfLsskZeL0jyZDs1RoQSotwBWj+4upTogNHuxQP5j/9H3IMG/3QB1gh8GEpbudATb/cS4NDYK3UBxufw==",
+          "dev": true,
+          "requires": {
+            "@embroider/shared-internals": "0.41.0",
+            "assert-never": "^1.1.0",
+            "ember-cli-babel": "^7.23.0",
+            "lodash": "^4.17.10",
+            "resolve": "^1.8.1",
+            "semver": "^7.3.2"
+          }
+        }
+      }
+    },
     "@eslint/eslintrc": {
       "version": "0.4.3",
       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -5214,6 +5359,12 @@
         }
       }
     },
+    "bootstrap": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
+      "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==",
+      "dev": true
+    },
     "bower-config": {
       "version": "1.4.3",
       "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-1.4.3.tgz",
@@ -8627,6 +8778,120 @@
         }
       }
     },
+    "ember-bootstrap": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npmjs.org/ember-bootstrap/-/ember-bootstrap-4.9.0.tgz",
+      "integrity": "sha512-5MUxd1rotCGNChVAiigDf1gIXXYIA+I5g8BHdY5im1BZsFmaGp497h0FqPeSU56Bfg8/7b5s4eAwEboqlM6m6A==",
+      "dev": true,
+      "requires": {
+        "@ember/render-modifiers": "^1.0.2",
+        "@embroider/macros": "^0.41.0",
+        "@embroider/util": "^0.41.0",
+        "@glimmer/component": "^1.0.4",
+        "@glimmer/tracking": "^1.0.4",
+        "broccoli-debug": "^0.6.3",
+        "broccoli-funnel": "^3.0.2",
+        "broccoli-merge-trees": "^4.2.0",
+        "chalk": "^4.1.1",
+        "ember-auto-import": "^1.11.2",
+        "ember-cli-babel": "^7.26.4",
+        "ember-cli-build-config-editor": "0.5.1",
+        "ember-cli-htmlbars": "^5.7.1",
+        "ember-cli-version-checker": "^5.1.2",
+        "ember-concurrency": ">=1.3.0 <3",
+        "ember-decorators": "^6.1.0",
+        "ember-element-helper": "^0.5.0",
+        "ember-focus-trap": "^0.7.0",
+        "ember-in-element-polyfill": "^1.0.1",
+        "ember-named-blocks-polyfill": "^0.2.4",
+        "ember-on-helper": "^0.1.0",
+        "ember-popper": "^0.11.3",
+        "ember-ref-bucket": "^2.0.0",
+        "ember-render-helpers": "^0.2.0",
+        "ember-style-modifier": "^0.6.0",
+        "findup-sync": "^4.0.0",
+        "fs-extra": "^9.1.0",
+        "resolve": "^1.18.1",
+        "rsvp": "^4.0.1",
+        "silent-error": "^1.0.1",
+        "tracked-toolbox": "^1.2.3"
+      },
+      "dependencies": {
+        "@embroider/macros": {
+          "version": "0.41.0",
+          "resolved": "https://registry.npmjs.org/@embroider/macros/-/macros-0.41.0.tgz",
+          "integrity": "sha512-QISzwEEfLsskZeL0jyZDs1RoQSotwBWj+4upTogNHuxQP5j/9H3IMG/3QB1gh8GEpbudATb/cS4NDYK3UBxufw==",
+          "dev": true,
+          "requires": {
+            "@embroider/shared-internals": "0.41.0",
+            "assert-never": "^1.1.0",
+            "ember-cli-babel": "^7.23.0",
+            "lodash": "^4.17.10",
+            "resolve": "^1.8.1",
+            "semver": "^7.3.2"
+          }
+        },
+        "broccoli-merge-trees": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npmjs.org/broccoli-merge-trees/-/broccoli-merge-trees-4.2.0.tgz",
+          "integrity": "sha512-nTrQe5AQtCrW4enLRvbD/vTLHqyW2tz+vsLXQe4IEaUhepuMGVKJJr+I8n34Vu6fPjmPLwTjzNC8izMIDMtHPw==",
+          "dev": true,
+          "requires": {
+            "broccoli-plugin": "^4.0.2",
+            "merge-trees": "^2.0.0"
+          }
+        },
+        "broccoli-plugin": {
+          "version": "4.0.7",
+          "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-4.0.7.tgz",
+          "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==",
+          "dev": true,
+          "requires": {
+            "broccoli-node-api": "^1.7.0",
+            "broccoli-output-wrapper": "^3.2.5",
+            "fs-merger": "^3.2.1",
+            "promise-map-series": "^0.3.0",
+            "quick-temp": "^0.1.8",
+            "rimraf": "^3.0.2",
+            "symlink-or-copy": "^1.3.1"
+          }
+        },
+        "fs-extra": {
+          "version": "9.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+          "dev": true,
+          "requires": {
+            "at-least-node": "^1.0.0",
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "jsonfile": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+          "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.6",
+            "universalify": "^2.0.0"
+          }
+        },
+        "promise-map-series": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/promise-map-series/-/promise-map-series-0.3.0.tgz",
+          "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==",
+          "dev": true
+        },
+        "universalify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+          "dev": true
+        }
+      }
+    },
     "ember-cache-primitive-polyfill": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/ember-cache-primitive-polyfill/-/ember-cache-primitive-polyfill-1.0.1.tgz",
@@ -9234,6 +9499,42 @@
       "integrity": "sha512-sKvOiPNHr5F/60NLd7SFzMpYPte/nnGkq/tMIfXejfKHIhaiIkYFqX8Z9UFTKWLLn+V7NOaby6niNPZUdvKCRw==",
       "dev": true
     },
+    "ember-cli-build-config-editor": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/ember-cli-build-config-editor/-/ember-cli-build-config-editor-0.5.1.tgz",
+      "integrity": "sha512-wNGVcpHbp6R+DeDHdpx+w4M+F+2cjaFDvf4ZV3VeIcHXLoxYlo0duXkbOLVKalHK/al6xO+rlZt5KqjK5Cyp0w==",
+      "dev": true,
+      "requires": {
+        "recast": "^0.12.0"
+      },
+      "dependencies": {
+        "ast-types": {
+          "version": "0.10.1",
+          "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz",
+          "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==",
+          "dev": true
+        },
+        "recast": {
+          "version": "0.12.9",
+          "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz",
+          "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==",
+          "dev": true,
+          "requires": {
+            "ast-types": "0.10.1",
+            "core-js": "^2.4.1",
+            "esprima": "~4.0.0",
+            "private": "~0.1.5",
+            "source-map": "~0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "ember-cli-dependency-checker": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/ember-cli-dependency-checker/-/ember-cli-dependency-checker-3.2.0.tgz",
@@ -9566,43 +9867,31 @@
       "integrity": "sha1-IMtop5D+D94kiN39jvu332/nZvI=",
       "dev": true
     },
-    "ember-cli-normalize-entity-name": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/ember-cli-normalize-entity-name/-/ember-cli-normalize-entity-name-1.0.0.tgz",
-      "integrity": "sha1-CxT3vLxZmqEXtf3cgeT9A8S61bc=",
-      "dev": true,
-      "requires": {
-        "silent-error": "^1.0.0"
-      }
-    },
-    "ember-cli-path-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/ember-cli-path-utils/-/ember-cli-path-utils-1.0.0.tgz",
-      "integrity": "sha1-Tjmvi1UwHN3FAXc5t3qAT7ogce0=",
-      "dev": true
-    },
-    "ember-cli-preprocess-registry": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/ember-cli-preprocess-registry/-/ember-cli-preprocess-registry-3.3.0.tgz",
-      "integrity": "sha512-60GYpw7VPeB7TvzTLZTuLTlHdOXvayxjAQ+IxM2T04Xkfyu75O2ItbWlftQW7NZVGkaCsXSRAmn22PG03VpLMA==",
+    "ember-cli-node-assets": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/ember-cli-node-assets/-/ember-cli-node-assets-0.2.2.tgz",
+      "integrity": "sha1-0tVWJufMZhn4gtf+VXUfkmYCJwg=",
       "dev": true,
       "requires": {
-        "broccoli-clean-css": "^1.1.0",
-        "broccoli-funnel": "^2.0.1",
-        "debug": "^3.0.1",
-        "process-relative-require": "^1.0.0"
+        "broccoli-funnel": "^1.0.1",
+        "broccoli-merge-trees": "^1.1.1",
+        "broccoli-source": "^1.1.0",
+        "debug": "^2.2.0",
+        "lodash": "^4.5.1",
+        "resolve": "^1.1.7"
       },
       "dependencies": {
         "broccoli-funnel": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz",
-          "integrity": "sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==",
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-1.2.0.tgz",
+          "integrity": "sha1-zdw6/F/xaFqAI0iP/3TOb7WlEpY=",
           "dev": true,
           "requires": {
             "array-equal": "^1.0.0",
             "blank-object": "^1.0.1",
             "broccoli-plugin": "^1.3.0",
             "debug": "^2.2.0",
+            "exists-sync": "0.0.4",
             "fast-ordered-set": "^1.0.0",
             "fs-tree-diff": "^0.5.3",
             "heimdalljs": "^0.2.0",
@@ -9612,31 +9901,121 @@
             "rimraf": "^2.4.3",
             "symlink-or-copy": "^1.0.0",
             "walk-sync": "^0.3.1"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "2.6.9",
-              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-              "dev": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
           }
         },
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+        "broccoli-merge-trees": {
+          "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/broccoli-merge-trees/-/broccoli-merge-trees-1.2.4.tgz",
+          "integrity": "sha1-oAFRm7UGfwZYnZGvopQkRaLQ/bU=",
           "dev": true,
           "requires": {
-            "ms": "^2.1.1"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.1.3",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+            "broccoli-plugin": "^1.3.0",
+            "can-symlink": "^1.0.0",
+            "fast-ordered-set": "^1.0.2",
+            "fs-tree-diff": "^0.5.4",
+            "heimdalljs": "^0.2.1",
+            "heimdalljs-logger": "^0.1.7",
+            "rimraf": "^2.4.3",
+            "symlink-or-copy": "^1.0.0"
+          }
+        },
+        "broccoli-source": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/broccoli-source/-/broccoli-source-1.1.0.tgz",
+          "integrity": "sha1-VPDoLItz9GWAy7xPV48LMvyo+Ak=",
+          "dev": true
+        },
+        "mkdirp": {
+          "version": "0.5.5",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "ember-cli-normalize-entity-name": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/ember-cli-normalize-entity-name/-/ember-cli-normalize-entity-name-1.0.0.tgz",
+      "integrity": "sha1-CxT3vLxZmqEXtf3cgeT9A8S61bc=",
+      "dev": true,
+      "requires": {
+        "silent-error": "^1.0.0"
+      }
+    },
+    "ember-cli-path-utils": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/ember-cli-path-utils/-/ember-cli-path-utils-1.0.0.tgz",
+      "integrity": "sha1-Tjmvi1UwHN3FAXc5t3qAT7ogce0=",
+      "dev": true
+    },
+    "ember-cli-preprocess-registry": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/ember-cli-preprocess-registry/-/ember-cli-preprocess-registry-3.3.0.tgz",
+      "integrity": "sha512-60GYpw7VPeB7TvzTLZTuLTlHdOXvayxjAQ+IxM2T04Xkfyu75O2ItbWlftQW7NZVGkaCsXSRAmn22PG03VpLMA==",
+      "dev": true,
+      "requires": {
+        "broccoli-clean-css": "^1.1.0",
+        "broccoli-funnel": "^2.0.1",
+        "debug": "^3.0.1",
+        "process-relative-require": "^1.0.0"
+      },
+      "dependencies": {
+        "broccoli-funnel": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz",
+          "integrity": "sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==",
+          "dev": true,
+          "requires": {
+            "array-equal": "^1.0.0",
+            "blank-object": "^1.0.1",
+            "broccoli-plugin": "^1.3.0",
+            "debug": "^2.2.0",
+            "fast-ordered-set": "^1.0.0",
+            "fs-tree-diff": "^0.5.3",
+            "heimdalljs": "^0.2.0",
+            "minimatch": "^3.0.0",
+            "mkdirp": "^0.5.0",
+            "path-posix": "^1.0.0",
+            "rimraf": "^2.4.3",
+            "symlink-or-copy": "^1.0.0",
+            "walk-sync": "^0.3.1"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "2.6.9",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+              "dev": true,
+              "requires": {
+                "ms": "2.0.0"
+              }
+            }
+          }
+        },
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.1.3",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
               "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
               "dev": true
             }
@@ -9927,6 +10306,19 @@
         }
       }
     },
+    "ember-concurrency": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ember-concurrency/-/ember-concurrency-2.1.2.tgz",
+      "integrity": "sha512-xC6L/SKuM08e9TK5igkSEwbAtkX2sqrj9Xap9G3zYSYdAIO7fcS6ZNEaD5e+dVXwPqH3tOIq41ZT7fqQ7mQ0KQ==",
+      "dev": true,
+      "requires": {
+        "@glimmer/tracking": "^1.0.2",
+        "ember-cli-babel": "^7.22.1",
+        "ember-cli-htmlbars": "^5.6.3",
+        "ember-compatibility-helpers": "^1.2.0",
+        "ember-destroyable-polyfill": "^2.0.2"
+      }
+    },
     "ember-data": {
       "version": "3.28.3",
       "resolved": "https://registry.npmjs.org/ember-data/-/ember-data-3.28.3.tgz",
@@ -10097,6 +10489,17 @@
         }
       }
     },
+    "ember-decorators": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/ember-decorators/-/ember-decorators-6.1.1.tgz",
+      "integrity": "sha512-63vZPntPn1aqMyeNRLoYjJD+8A8obd+c2iZkJflswpDRNVIsp2m7aQdSCtPt4G0U/TEq2251g+N10maHX3rnJQ==",
+      "dev": true,
+      "requires": {
+        "@ember-decorators/component": "^6.1.1",
+        "@ember-decorators/object": "^6.1.1",
+        "ember-cli-babel": "^7.7.3"
+      }
+    },
     "ember-destroyable-polyfill": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/ember-destroyable-polyfill/-/ember-destroyable-polyfill-2.0.3.tgz",
@@ -10108,6 +10511,17 @@
         "ember-compatibility-helpers": "^1.2.1"
       }
     },
+    "ember-element-helper": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/ember-element-helper/-/ember-element-helper-0.5.5.tgz",
+      "integrity": "sha512-Tu3hsI+/mjHBUvw62Qi+YDZtKkn59V66CjwbgfNTZZ7aHf4gFm1ow4zJ4WLnpnie8p9FvOmIUxwl5HvgPJIcFA==",
+      "dev": true,
+      "requires": {
+        "@embroider/util": "^0.39.1 || ^0.40.0 || ^0.41.0",
+        "ember-cli-babel": "^7.17.2",
+        "ember-cli-htmlbars": "^5.1.0"
+      }
+    },
     "ember-export-application-global": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/ember-export-application-global/-/ember-export-application-global-2.0.1.tgz",
@@ -10416,6 +10830,64 @@
         }
       }
     },
+    "ember-focus-trap": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/ember-focus-trap/-/ember-focus-trap-0.7.0.tgz",
+      "integrity": "sha512-WHOD8jTcCzsRb0cU8J5SKObrxbdD8rPSWrSUjZ2QYu9dVbaXg6/hZxcN5JrmPY1ArnsRaLMPdOUALYeZTP29og==",
+      "dev": true,
+      "requires": {
+        "@embroider/macros": "^0.41.0",
+        "ember-auto-import": "^1.11.2",
+        "ember-cli-babel": "^7.26.3",
+        "ember-modifier-manager-polyfill": "^1.2.0",
+        "focus-trap": "^6.4.0"
+      },
+      "dependencies": {
+        "@embroider/macros": {
+          "version": "0.41.0",
+          "resolved": "https://registry.npmjs.org/@embroider/macros/-/macros-0.41.0.tgz",
+          "integrity": "sha512-QISzwEEfLsskZeL0jyZDs1RoQSotwBWj+4upTogNHuxQP5j/9H3IMG/3QB1gh8GEpbudATb/cS4NDYK3UBxufw==",
+          "dev": true,
+          "requires": {
+            "@embroider/shared-internals": "0.41.0",
+            "assert-never": "^1.1.0",
+            "ember-cli-babel": "^7.23.0",
+            "lodash": "^4.17.10",
+            "resolve": "^1.8.1",
+            "semver": "^7.3.2"
+          }
+        }
+      }
+    },
+    "ember-in-element-polyfill": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/ember-in-element-polyfill/-/ember-in-element-polyfill-1.0.1.tgz",
+      "integrity": "sha512-eHs+7D7PuQr8a1DPqsJTsEyo3FZ1XuH6WEZaEBPDa9s0xLlwByCNKl8hi1EbXOgvgEZNHHi9Rh0vjxyfakrlgg==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.3.1",
+        "ember-cli-babel": "^7.23.1",
+        "ember-cli-htmlbars": "^5.3.1",
+        "ember-cli-version-checker": "^5.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
     "ember-inflector": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/ember-inflector/-/ember-inflector-4.0.2.tgz",
@@ -10862,37 +11334,681 @@
           "integrity": "sha512-c2EWrgB9IKHi1jbf4LG9sxKgHYOY+Ej5li6siEGtFecCXWG7eQOqATPEJ0rg1KFETXROEkErc1t5XiNrLG666Q==",
           "dev": true,
           "requires": {
-            "object-assign": "4.1.1"
+            "object-assign": "4.1.1"
+          }
+        }
+      }
+    },
+    "ember-modifier": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ember-modifier/-/ember-modifier-2.1.2.tgz",
+      "integrity": "sha512-3Lsu1fV1sIGa66HOW07RZc6EHISwKt5VA5AUnFss2HX6OTfpxTJ2qvPctt2Yt0XPQXJ4G6BQasr/F35CX7UGJA==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.22.1",
+        "ember-cli-normalize-entity-name": "^1.0.0",
+        "ember-cli-string-utils": "^1.1.0",
+        "ember-cli-typescript": "^3.1.3",
+        "ember-compatibility-helpers": "^1.2.4",
+        "ember-destroyable-polyfill": "^2.0.2",
+        "ember-modifier-manager-polyfill": "^1.2.0"
+      },
+      "dependencies": {
+        "@babel/plugin-transform-typescript": {
+          "version": "7.8.7",
+          "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz",
+          "integrity": "sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-create-class-features-plugin": "^7.8.3",
+            "@babel/helper-plugin-utils": "^7.8.3",
+            "@babel/plugin-syntax-typescript": "^7.8.3"
+          }
+        },
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ember-cli-typescript": {
+          "version": "3.1.4",
+          "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-3.1.4.tgz",
+          "integrity": "sha512-HJ73kL45OGRmIkPhBNFt31I1SGUvdZND+LCH21+qpq3pPlFpJG8GORyXpP+2ze8PbnITNLzwe5AwUrpyuRswdQ==",
+          "dev": true,
+          "requires": {
+            "@babel/plugin-proposal-nullish-coalescing-operator": "^7.4.4",
+            "@babel/plugin-proposal-optional-chaining": "^7.6.0",
+            "@babel/plugin-transform-typescript": "~7.8.0",
+            "ansi-to-html": "^0.6.6",
+            "broccoli-stew": "^3.0.0",
+            "debug": "^4.0.0",
+            "ember-cli-babel-plugin-helpers": "^1.0.0",
+            "execa": "^3.0.0",
+            "fs-extra": "^8.0.0",
+            "resolve": "^1.5.0",
+            "rsvp": "^4.8.1",
+            "semver": "^6.3.0",
+            "stagehand": "^1.0.0",
+            "walk-sync": "^2.0.0"
+          }
+        },
+        "execa": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz",
+          "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^7.0.0",
+            "get-stream": "^5.0.0",
+            "human-signals": "^1.1.1",
+            "is-stream": "^2.0.0",
+            "merge-stream": "^2.0.0",
+            "npm-run-path": "^4.0.0",
+            "onetime": "^5.1.0",
+            "p-finally": "^2.0.0",
+            "signal-exit": "^3.0.2",
+            "strip-final-newline": "^2.0.0"
+          }
+        },
+        "fs-extra": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "human-signals": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+          "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+          "dev": true
+        },
+        "matcher-collection": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+          "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+          "dev": true,
+          "requires": {
+            "@types/minimatch": "^3.0.3",
+            "minimatch": "^3.0.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "npm-run-path": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+          "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.0.0"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "walk-sync": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+          "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+          "dev": true,
+          "requires": {
+            "@types/minimatch": "^3.0.3",
+            "ensure-posix-path": "^1.1.0",
+            "matcher-collection": "^2.0.0",
+            "minimatch": "^3.0.4"
+          }
+        }
+      }
+    },
+    "ember-modifier-manager-polyfill": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/ember-modifier-manager-polyfill/-/ember-modifier-manager-polyfill-1.2.0.tgz",
+      "integrity": "sha512-bnaKF1LLKMkBNeDoetvIJ4vhwRPKIIumWr6dbVuW6W6p4QV8ZiO+GdF8J7mxDNlog9CeL9Z/7wam4YS86G8BYA==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.10.0",
+        "ember-cli-version-checker": "^2.1.2",
+        "ember-compatibility-helpers": "^1.2.0"
+      },
+      "dependencies": {
+        "ember-cli-version-checker": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz",
+          "integrity": "sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==",
+          "dev": true,
+          "requires": {
+            "resolve": "^1.3.3",
+            "semver": "^5.3.0"
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
+      }
+    },
+    "ember-named-blocks-polyfill": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/ember-named-blocks-polyfill/-/ember-named-blocks-polyfill-0.2.4.tgz",
+      "integrity": "sha512-PsohC7ejjS7V++6i/JSy0pl1hXLV3IS3Qs+O7SrjIPYcg1UEmUwqgPiDmXqNgy0p2dc5TK5bIJTtX8wofCI63Q==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.19.0",
+        "ember-cli-version-checker": "^5.1.1"
+      }
+    },
+    "ember-on-helper": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/ember-on-helper/-/ember-on-helper-0.1.0.tgz",
+      "integrity": "sha512-jjafBnWfoA4VSSje476ft5G+urlvvuSDddwAJjKDCjKY9mbe3hAEsJiMBAaPObJRMm1FOglCuKjQZfwDDls6MQ==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.7.3"
+      }
+    },
+    "ember-page-title": {
+      "version": "6.2.2",
+      "resolved": "https://registry.npmjs.org/ember-page-title/-/ember-page-title-6.2.2.tgz",
+      "integrity": "sha512-YTXA+cylZrh9zO0zwjlaAGReT2MVOxAMnVO1OOygFrs1JBs4D6CKV3tImoilg3AvIXFBeJfFNNUbJOdRd9IGGg==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.23.1"
+      }
+    },
+    "ember-popper": {
+      "version": "0.11.3",
+      "resolved": "https://registry.npmjs.org/ember-popper/-/ember-popper-0.11.3.tgz",
+      "integrity": "sha512-7MyVXH32sKyh1zUZLgh3L3TnrMyPjIY5yiUyi8RpcVn/Hr0yrHCTR3zflx0ZDeuaHo0xyY0xN9Pj61Tfbuplrw==",
+      "dev": true,
+      "requires": {
+        "@ember/render-modifiers": "^1.0.2",
+        "ember-cli-babel": "^7.13.0",
+        "ember-cli-htmlbars": "^4.2.0",
+        "ember-cli-node-assets": "^0.2.2",
+        "ember-in-element-polyfill": "^1.0.0",
+        "ember-raf-scheduler": "^0.1.0",
+        "fastboot-transform": "^0.1.0",
+        "popper.js": "^1.14.1"
+      },
+      "dependencies": {
+        "babel-plugin-htmlbars-inline-precompile": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-3.2.0.tgz",
+          "integrity": "sha512-IUeZmgs9tMUGXYu1vfke5I18yYJFldFGdNFQOWslXTnDWXzpwPih7QFduUqvT+awDpDuNtXpdt5JAf43Q1Hhzg==",
+          "dev": true
+        },
+        "broccoli-output-wrapper": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/broccoli-output-wrapper/-/broccoli-output-wrapper-2.0.0.tgz",
+          "integrity": "sha512-V/ozejo+snzNf75i/a6iTmp71k+rlvqjE3+jYfimuMwR1tjNNRdtfno+NGNQB2An9bIAeqZnKhMDurAznHAdtA==",
+          "dev": true,
+          "requires": {
+            "heimdalljs-logger": "^0.1.10"
+          }
+        },
+        "broccoli-plugin": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/broccoli-plugin/-/broccoli-plugin-3.1.0.tgz",
+          "integrity": "sha512-7w7FP8WJYjLvb0eaw27LO678TGGaom++49O1VYIuzjhXjK5kn2+AMlDm7CaUFw4F7CLGoVQeZ84d8gICMJa4lA==",
+          "dev": true,
+          "requires": {
+            "broccoli-node-api": "^1.6.0",
+            "broccoli-output-wrapper": "^2.0.0",
+            "fs-merger": "^3.0.1",
+            "promise-map-series": "^0.2.1",
+            "quick-temp": "^0.1.3",
+            "rimraf": "^2.3.4",
+            "symlink-or-copy": "^1.1.8"
+          }
+        },
+        "ember-cli-htmlbars": {
+          "version": "4.5.0",
+          "resolved": "https://registry.npmjs.org/ember-cli-htmlbars/-/ember-cli-htmlbars-4.5.0.tgz",
+          "integrity": "sha512-bYJpK1pqFu9AadDAGTw05g2LMNzY8xTCIqQm7dMJmKEoUpLRFbPf4SfHXrktzDh7Q5iggl6Skzf1M0bPlIxARw==",
+          "dev": true,
+          "requires": {
+            "@ember/edition-utils": "^1.2.0",
+            "babel-plugin-htmlbars-inline-precompile": "^3.2.0",
+            "broccoli-debug": "^0.6.5",
+            "broccoli-persistent-filter": "^2.3.1",
+            "broccoli-plugin": "^3.1.0",
+            "common-tags": "^1.8.0",
+            "ember-cli-babel-plugin-helpers": "^1.1.0",
+            "fs-tree-diff": "^2.0.1",
+            "hash-for-dep": "^1.5.1",
+            "heimdalljs-logger": "^0.1.10",
+            "json-stable-stringify": "^1.0.1",
+            "semver": "^6.3.0",
+            "strip-bom": "^4.0.0",
+            "walk-sync": "^2.0.2"
+          }
+        },
+        "fs-tree-diff": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/fs-tree-diff/-/fs-tree-diff-2.0.1.tgz",
+          "integrity": "sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==",
+          "dev": true,
+          "requires": {
+            "@types/symlink-or-copy": "^1.2.0",
+            "heimdalljs-logger": "^0.1.7",
+            "object-assign": "^4.1.0",
+            "path-posix": "^1.0.0",
+            "symlink-or-copy": "^1.1.8"
+          }
+        },
+        "matcher-collection": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+          "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+          "dev": true,
+          "requires": {
+            "@types/minimatch": "^3.0.3",
+            "minimatch": "^3.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "walk-sync": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+          "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+          "dev": true,
+          "requires": {
+            "@types/minimatch": "^3.0.3",
+            "ensure-posix-path": "^1.1.0",
+            "matcher-collection": "^2.0.0",
+            "minimatch": "^3.0.4"
+          }
+        }
+      }
+    },
+    "ember-qunit": {
+      "version": "5.1.4",
+      "resolved": "https://registry.npmjs.org/ember-qunit/-/ember-qunit-5.1.4.tgz",
+      "integrity": "sha512-L8L3TA5UYdsoJl9If88CU6Liu5Kr76uEpXimeJIyjoRX2kI57YWI2/76uiW7UU0qdYfvcmVazgd+MJGj9aB2JA==",
+      "dev": true,
+      "requires": {
+        "broccoli-funnel": "^3.0.3",
+        "broccoli-merge-trees": "^3.0.2",
+        "common-tags": "^1.8.0",
+        "ember-auto-import": "^1.10.1",
+        "ember-cli-babel": "^7.23.1",
+        "ember-cli-test-loader": "^3.0.0",
+        "resolve-package-path": "^3.1.0",
+        "silent-error": "^1.1.1",
+        "validate-peer-dependencies": "^1.1.0"
+      }
+    },
+    "ember-raf-scheduler": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/ember-raf-scheduler/-/ember-raf-scheduler-0.1.0.tgz",
+      "integrity": "sha1-oioC0jjDdEmSMcA6ucW5iHxyqFM=",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^6.6.0"
+      },
+      "dependencies": {
+        "amd-name-resolver": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/amd-name-resolver/-/amd-name-resolver-1.2.0.tgz",
+          "integrity": "sha512-hlSTWGS1t6/xq5YCed7YALg7tKZL3rkl7UwEZ/eCIkn8JxmM6fU6Qs/1hwtjQqfuYxlffuUcgYEm0f5xP4YKaA==",
+          "dev": true,
+          "requires": {
+            "ensure-posix-path": "^1.0.1"
+          }
+        },
+        "babel-plugin-debug-macros": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/babel-plugin-debug-macros/-/babel-plugin-debug-macros-0.2.0.tgz",
+          "integrity": "sha512-Wpmw4TbhR3Eq2t3W51eBAQSdKlr+uAyF0GI4GtPfMCD12Y4cIdpKC9l0RjNTH/P9isFypSqqewMPm7//fnZlNA==",
+          "dev": true,
+          "requires": {
+            "semver": "^5.3.0"
+          }
+        },
+        "babel-plugin-ember-modules-api-polyfill": {
+          "version": "2.13.4",
+          "resolved": "https://registry.npmjs.org/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.13.4.tgz",
+          "integrity": "sha512-uxQPkEQAzCYdwhZk16O9m1R4xtCRNy4oEUTBrccOPfzlIahRZJic/JeP/ZEL0BC6Mfq6r55eOg6gMF/zdFoCvA==",
+          "dev": true,
+          "requires": {
+            "ember-rfc176-data": "^0.3.13"
+          }
+        },
+        "broccoli-babel-transpiler": {
+          "version": "6.5.1",
+          "resolved": "https://registry.npmjs.org/broccoli-babel-transpiler/-/broccoli-babel-transpiler-6.5.1.tgz",
+          "integrity": "sha512-w6GcnkxvHcNCte5FcLGEG1hUdQvlfvSN/6PtGWU/otg69Ugk8rUk51h41R0Ugoc+TNxyeFG1opRt2RlA87XzNw==",
+          "dev": true,
+          "requires": {
+            "babel-core": "^6.26.0",
+            "broccoli-funnel": "^2.0.1",
+            "broccoli-merge-trees": "^2.0.0",
+            "broccoli-persistent-filter": "^1.4.3",
+            "clone": "^2.0.0",
+            "hash-for-dep": "^1.2.3",
+            "heimdalljs-logger": "^0.1.7",
+            "json-stable-stringify": "^1.0.0",
+            "rsvp": "^4.8.2",
+            "workerpool": "^2.3.0"
+          }
+        },
+        "broccoli-funnel": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz",
+          "integrity": "sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==",
+          "dev": true,
+          "requires": {
+            "array-equal": "^1.0.0",
+            "blank-object": "^1.0.1",
+            "broccoli-plugin": "^1.3.0",
+            "debug": "^2.2.0",
+            "fast-ordered-set": "^1.0.0",
+            "fs-tree-diff": "^0.5.3",
+            "heimdalljs": "^0.2.0",
+            "minimatch": "^3.0.0",
+            "mkdirp": "^0.5.0",
+            "path-posix": "^1.0.0",
+            "rimraf": "^2.4.3",
+            "symlink-or-copy": "^1.0.0",
+            "walk-sync": "^0.3.1"
+          }
+        },
+        "broccoli-merge-trees": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/broccoli-merge-trees/-/broccoli-merge-trees-2.0.1.tgz",
+          "integrity": "sha512-WjaexJ+I8BxP5V5RNn6um/qDRSmKoiBC/QkRi79FT9ClHfldxRyCDs9mcV7mmoaPlsshmmPaUz5jdtcKA6DClQ==",
+          "dev": true,
+          "requires": {
+            "broccoli-plugin": "^1.3.0",
+            "merge-trees": "^1.0.1"
+          }
+        },
+        "broccoli-persistent-filter": {
+          "version": "1.4.6",
+          "resolved": "https://registry.npmjs.org/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.6.tgz",
+          "integrity": "sha512-0RejLwoC95kv4kta8KAa+FmECJCK78Qgm8SRDEK7YyU0N9Cx6KpY3UCDy9WELl3mCXLN8TokNxc7/hp3lL4lfw==",
+          "dev": true,
+          "requires": {
+            "async-disk-cache": "^1.2.1",
+            "async-promise-queue": "^1.0.3",
+            "broccoli-plugin": "^1.0.0",
+            "fs-tree-diff": "^0.5.2",
+            "hash-for-dep": "^1.0.2",
+            "heimdalljs": "^0.2.1",
+            "heimdalljs-logger": "^0.1.7",
+            "mkdirp": "^0.5.1",
+            "promise-map-series": "^0.2.1",
+            "rimraf": "^2.6.1",
+            "rsvp": "^3.0.18",
+            "symlink-or-copy": "^1.0.1",
+            "walk-sync": "^0.3.1"
+          },
+          "dependencies": {
+            "rsvp": {
+              "version": "3.6.2",
+              "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
+              "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==",
+              "dev": true
+            }
+          }
+        },
+        "broccoli-source": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/broccoli-source/-/broccoli-source-1.1.0.tgz",
+          "integrity": "sha1-VPDoLItz9GWAy7xPV48LMvyo+Ak=",
+          "dev": true
+        },
+        "ember-cli-babel": {
+          "version": "6.18.0",
+          "resolved": "https://registry.npmjs.org/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz",
+          "integrity": "sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA==",
+          "dev": true,
+          "requires": {
+            "amd-name-resolver": "1.2.0",
+            "babel-plugin-debug-macros": "^0.2.0-beta.6",
+            "babel-plugin-ember-modules-api-polyfill": "^2.6.0",
+            "babel-plugin-transform-es2015-modules-amd": "^6.24.0",
+            "babel-polyfill": "^6.26.0",
+            "babel-preset-env": "^1.7.0",
+            "broccoli-babel-transpiler": "^6.5.0",
+            "broccoli-debug": "^0.6.4",
+            "broccoli-funnel": "^2.0.0",
+            "broccoli-source": "^1.1.0",
+            "clone": "^2.0.0",
+            "ember-cli-version-checker": "^2.1.2",
+            "semver": "^5.5.0"
+          }
+        },
+        "ember-cli-version-checker": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-2.2.0.tgz",
+          "integrity": "sha512-G+KtYIVlSOWGcNaTFHk76xR4GdzDLzAS4uxZUKdASuFX0KJE43C6DaqL+y3VTpUFLI2FIkAS6HZ4I1YBi+S3hg==",
+          "dev": true,
+          "requires": {
+            "resolve": "^1.3.3",
+            "semver": "^5.3.0"
+          }
+        },
+        "merge-trees": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/merge-trees/-/merge-trees-1.0.1.tgz",
+          "integrity": "sha1-zL5nRWl4f53vF/1G5lJfVwC70j4=",
+          "dev": true,
+          "requires": {
+            "can-symlink": "^1.0.0",
+            "fs-tree-diff": "^0.5.4",
+            "heimdalljs": "^0.2.1",
+            "heimdalljs-logger": "^0.1.7",
+            "rimraf": "^2.4.3",
+            "symlink-or-copy": "^1.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.5",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        },
+        "workerpool": {
+          "version": "2.3.4",
+          "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-2.3.4.tgz",
+          "integrity": "sha512-c2EWrgB9IKHi1jbf4LG9sxKgHYOY+Ej5li6siEGtFecCXWG7eQOqATPEJ0rg1KFETXROEkErc1t5XiNrLG666Q==",
+          "dev": true,
+          "requires": {
+            "object-assign": "4.1.1"
+          }
+        }
+      }
+    },
+    "ember-ref-bucket": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ember-ref-bucket/-/ember-ref-bucket-2.0.0.tgz",
+      "integrity": "sha512-HtFx0Rrd+iOwCtMHFAJv1zGa3Z9XC2v6wuEfsf/Ho3kAg+3XDStzGJWkMXmdXf1XBBbr99y40IVOvkJbCeHkew==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.22.1",
+        "ember-cli-htmlbars": "^5.3.1",
+        "ember-destroyable-polyfill": "^2.0.2",
+        "ember-modifier": "^2.1.1"
+      }
+    },
+    "ember-render-helpers": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/ember-render-helpers/-/ember-render-helpers-0.2.0.tgz",
+      "integrity": "sha512-MnqGS8BnY3GJ+n5RZVVRqCwKjfXXMr5quKyqNu1vxft8oslOJuZ1f1dOesQouD+6LwD4Y9tWRVKNw+LOqM9ocw==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.23.0",
+        "ember-cli-typescript": "^4.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ember-cli-typescript": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/ember-cli-typescript/-/ember-cli-typescript-4.2.1.tgz",
+          "integrity": "sha512-0iKTZ+/wH6UB/VTWKvGuXlmwiE8HSIGcxHamwNhEC5x1mN3z8RfvsFZdQWYUzIWFN2Tek0gmepGRPTwWdBYl/A==",
+          "dev": true,
+          "requires": {
+            "ansi-to-html": "^0.6.15",
+            "broccoli-stew": "^3.0.0",
+            "debug": "^4.0.0",
+            "execa": "^4.0.0",
+            "fs-extra": "^9.0.1",
+            "resolve": "^1.5.0",
+            "rsvp": "^4.8.1",
+            "semver": "^7.3.2",
+            "stagehand": "^1.0.0",
+            "walk-sync": "^2.2.0"
+          }
+        },
+        "execa": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+          "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^7.0.0",
+            "get-stream": "^5.0.0",
+            "human-signals": "^1.1.1",
+            "is-stream": "^2.0.0",
+            "merge-stream": "^2.0.0",
+            "npm-run-path": "^4.0.0",
+            "onetime": "^5.1.0",
+            "signal-exit": "^3.0.2",
+            "strip-final-newline": "^2.0.0"
+          }
+        },
+        "fs-extra": {
+          "version": "9.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+          "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+          "dev": true,
+          "requires": {
+            "at-least-node": "^1.0.0",
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "human-signals": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+          "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+          "dev": true
+        },
+        "jsonfile": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+          "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.6",
+            "universalify": "^2.0.0"
+          }
+        },
+        "matcher-collection": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
+          "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==",
+          "dev": true,
+          "requires": {
+            "@types/minimatch": "^3.0.3",
+            "minimatch": "^3.0.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "npm-run-path": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+          "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.0.0"
+          }
+        },
+        "universalify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+          "dev": true
+        },
+        "walk-sync": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz",
+          "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==",
+          "dev": true,
+          "requires": {
+            "@types/minimatch": "^3.0.3",
+            "ensure-posix-path": "^1.1.0",
+            "matcher-collection": "^2.0.0",
+            "minimatch": "^3.0.4"
           }
         }
       }
     },
-    "ember-page-title": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/ember-page-title/-/ember-page-title-6.2.2.tgz",
-      "integrity": "sha512-YTXA+cylZrh9zO0zwjlaAGReT2MVOxAMnVO1OOygFrs1JBs4D6CKV3tImoilg3AvIXFBeJfFNNUbJOdRd9IGGg==",
-      "dev": true,
-      "requires": {
-        "ember-cli-babel": "^7.23.1"
-      }
-    },
-    "ember-qunit": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/ember-qunit/-/ember-qunit-5.1.4.tgz",
-      "integrity": "sha512-L8L3TA5UYdsoJl9If88CU6Liu5Kr76uEpXimeJIyjoRX2kI57YWI2/76uiW7UU0qdYfvcmVazgd+MJGj9aB2JA==",
-      "dev": true,
-      "requires": {
-        "broccoli-funnel": "^3.0.3",
-        "broccoli-merge-trees": "^3.0.2",
-        "common-tags": "^1.8.0",
-        "ember-auto-import": "^1.10.1",
-        "ember-cli-babel": "^7.23.1",
-        "ember-cli-test-loader": "^3.0.0",
-        "resolve-package-path": "^3.1.0",
-        "silent-error": "^1.1.1",
-        "validate-peer-dependencies": "^1.1.0"
-      }
-    },
     "ember-resolver": {
       "version": "8.0.3",
       "resolved": "https://registry.npmjs.org/ember-resolver/-/ember-resolver-8.0.3.tgz",
@@ -11083,6 +12199,16 @@
         "node-fetch": "^2.6.0"
       }
     },
+    "ember-style-modifier": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/ember-style-modifier/-/ember-style-modifier-0.6.0.tgz",
+      "integrity": "sha512-KqW4vyR80l/GMJsuFV+WLqTmGjXKLpoQ/HAmno+oMDrMt13p/5ImrvarQ6lFgXttFnLCxl6YpMY4YX27p1G54g==",
+      "dev": true,
+      "requires": {
+        "ember-cli-babel": "^7.21.0",
+        "ember-modifier": "^2.1.0"
+      }
+    },
     "ember-template-lint": {
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/ember-template-lint/-/ember-template-lint-3.7.0.tgz",
@@ -12421,6 +13547,221 @@
         }
       }
     },
+    "fastboot-transform": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/fastboot-transform/-/fastboot-transform-0.1.3.tgz",
+      "integrity": "sha512-6otygPIJw1ARp1jJb+6KVO56iKBjhO+5x59RSC9qiZTbZRrv+HZAuP00KD3s+nWMvcFDemtdkugki9DNFTTwCQ==",
+      "dev": true,
+      "requires": {
+        "broccoli-stew": "^1.5.0",
+        "convert-source-map": "^1.5.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "broccoli-funnel": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/broccoli-funnel/-/broccoli-funnel-2.0.2.tgz",
+          "integrity": "sha512-/vDTqtv7ipjEZQOVqO4vGDVAOZyuYzQ/EgGoyewfOgh1M7IQAToBKZI0oAQPgMBeFPPlIbfMuAngk+ohPBuaHQ==",
+          "dev": true,
+          "requires": {
+            "array-equal": "^1.0.0",
+            "blank-object": "^1.0.1",
+            "broccoli-plugin": "^1.3.0",
+            "debug": "^2.2.0",
+            "fast-ordered-set": "^1.0.0",
+            "fs-tree-diff": "^0.5.3",
+            "heimdalljs": "^0.2.0",
+            "minimatch": "^3.0.0",
+            "mkdirp": "^0.5.0",
+            "path-posix": "^1.0.0",
+            "rimraf": "^2.4.3",
+            "symlink-or-copy": "^1.0.0",
+            "walk-sync": "^0.3.1"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "2.6.9",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+              "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+              "dev": true,
+              "requires": {
+                "ms": "2.0.0"
+              }
+            }
+          }
+        },
+        "broccoli-merge-trees": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/broccoli-merge-trees/-/broccoli-merge-trees-2.0.1.tgz",
+          "integrity": "sha512-WjaexJ+I8BxP5V5RNn6um/qDRSmKoiBC/QkRi79FT9ClHfldxRyCDs9mcV7mmoaPlsshmmPaUz5jdtcKA6DClQ==",
+          "dev": true,
+          "requires": {
+            "broccoli-plugin": "^1.3.0",
+            "merge-trees": "^1.0.1"
+          }
+        },
+        "broccoli-persistent-filter": {
+          "version": "1.4.6",
+          "resolved": "https://registry.npmjs.org/broccoli-persistent-filter/-/broccoli-persistent-filter-1.4.6.tgz",
+          "integrity": "sha512-0RejLwoC95kv4kta8KAa+FmECJCK78Qgm8SRDEK7YyU0N9Cx6KpY3UCDy9WELl3mCXLN8TokNxc7/hp3lL4lfw==",
+          "dev": true,
+          "requires": {
+            "async-disk-cache": "^1.2.1",
+            "async-promise-queue": "^1.0.3",
+            "broccoli-plugin": "^1.0.0",
+            "fs-tree-diff": "^0.5.2",
+            "hash-for-dep": "^1.0.2",
+            "heimdalljs": "^0.2.1",
+            "heimdalljs-logger": "^0.1.7",
+            "mkdirp": "^0.5.1",
+            "promise-map-series": "^0.2.1",
+            "rimraf": "^2.6.1",
+            "rsvp": "^3.0.18",
+            "symlink-or-copy": "^1.0.1",
+            "walk-sync": "^0.3.1"
+          },
+          "dependencies": {
+            "rsvp": {
+              "version": "3.6.2",
+              "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
+              "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==",
+              "dev": true
+            }
+          }
+        },
+        "broccoli-stew": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/broccoli-stew/-/broccoli-stew-1.6.0.tgz",
+          "integrity": "sha512-sUwCJNnYH4Na690By5xcEMAZqKgquUQnMAEuIiL3Z2k63mSw9Xg+7Ew4wCrFrMmXMcLpWjZDOm6Yqnq268N+ZQ==",
+          "dev": true,
+          "requires": {
+            "broccoli-debug": "^0.6.1",
+            "broccoli-funnel": "^2.0.0",
+            "broccoli-merge-trees": "^2.0.0",
+            "broccoli-persistent-filter": "^1.1.6",
+            "broccoli-plugin": "^1.3.0",
+            "chalk": "^2.4.1",
+            "debug": "^3.1.0",
+            "ensure-posix-path": "^1.0.1",
+            "fs-extra": "^5.0.0",
+            "minimatch": "^3.0.4",
+            "resolve": "^1.8.1",
+            "rsvp": "^4.8.3",
+            "symlink-or-copy": "^1.2.0",
+            "walk-sync": "^0.3.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+          "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+          "dev": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+          "dev": true
+        },
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.1.3",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+              "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+              "dev": true
+            }
+          }
+        },
+        "fs-extra": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
+          "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "merge-trees": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/merge-trees/-/merge-trees-1.0.1.tgz",
+          "integrity": "sha1-zL5nRWl4f53vF/1G5lJfVwC70j4=",
+          "dev": true,
+          "requires": {
+            "can-symlink": "^1.0.0",
+            "fs-tree-diff": "^0.5.4",
+            "heimdalljs": "^0.2.1",
+            "heimdalljs-logger": "^0.1.7",
+            "rimraf": "^2.4.3",
+            "symlink-or-copy": "^1.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.5",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
     "fastq": {
       "version": "1.13.0",
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
@@ -12788,6 +14129,15 @@
         }
       }
     },
+    "focus-trap": {
+      "version": "6.7.1",
+      "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-6.7.1.tgz",
+      "integrity": "sha512-a6czHbT9twVpy2RpkWQA9vIgwQgB9Nx1PIxNNUxQT4nugG/3QibwxO+tWTh9i+zSY2SFiX4pnYhTaFaQF/6ZAg==",
+      "dev": true,
+      "requires": {
+        "tabbable": "^5.2.1"
+      }
+    },
     "follow-redirects": {
       "version": "1.14.4",
       "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
@@ -16347,6 +17697,12 @@
         "find-up": "^2.1.0"
       }
     },
+    "popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
+      "dev": true
+    },
     "portfinder": {
       "version": "1.0.28",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
@@ -18290,6 +19646,12 @@
         }
       }
     },
+    "tabbable": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.2.1.tgz",
+      "integrity": "sha512-40pEZ2mhjaZzK0BnI+QGNjJO8UYx9pP5v7BGe17SORTO0OEuuaAwQTkAp8whcZvqon44wKFOikD+Al11K3JICQ==",
+      "dev": true
+    },
     "table": {
       "version": "6.7.1",
       "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz",
@@ -18871,6 +20233,28 @@
         "punycode": "^2.1.1"
       }
     },
+    "tracked-maps-and-sets": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tracked-maps-and-sets/-/tracked-maps-and-sets-2.2.1.tgz",
+      "integrity": "sha512-XYrXh6L/GpGmVmG3KcN/qoDyi4FxHh8eZY/BA/RuoxynskV+GZSfwrX3R+5DR2CIkzkCx4zi4kkDRg1AMDfDhg==",
+      "dev": true,
+      "requires": {
+        "@glimmer/tracking": "^1.0.0",
+        "ember-cli-babel": "^7.17.2"
+      }
+    },
+    "tracked-toolbox": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/tracked-toolbox/-/tracked-toolbox-1.2.3.tgz",
+      "integrity": "sha512-0axTjBYinHurXoat9Qk71GbCxR2GZWDbhV3aGQmeGr7FxGXvfz+/mvuG69Nl3omkOdYy5GRjy7lYXJbDz8lPMA==",
+      "dev": true,
+      "requires": {
+        "ember-cache-primitive-polyfill": "^1.0.0",
+        "ember-cli-babel": "^7.21.0",
+        "ember-cli-htmlbars": "^5.3.1",
+        "tracked-maps-and-sets": "^2.0.0"
+      }
+    },
     "tree-sync": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/tree-sync/-/tree-sync-1.4.0.tgz",
diff --git a/package.json b/package.json
index 5c23ab6..914c044 100644
--- a/package.json
+++ b/package.json
@@ -28,8 +28,10 @@
     "@glimmer/component": "^1.0.4",
     "@glimmer/tracking": "^1.0.4",
     "babel-eslint": "^10.1.0",
+    "bootstrap": "^4.6.0",
     "broccoli-asset-rev": "^3.0.0",
     "ember-auto-import": "^1.11.3",
+    "ember-bootstrap": "^4.9.0",
     "ember-cli": "~3.28.0",
     "ember-cli-app-version": "^5.0.0",
     "ember-cli-babel": "^7.26.6",
diff --git a/public/api/documents/10.json b/public/api/documents/10.json
new file mode 100644
index 0000000..af949e1
--- /dev/null
+++ b/public/api/documents/10.json
@@ -0,0 +1,9 @@
+{
+    "data": {
+        "type": "document",
+        "id": 10,
+        "attributes": {
+            "title": "Fahrschein-3.pdf"
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/api/documents/11.json b/public/api/documents/11.json
new file mode 100644
index 0000000..ecf1343
--- /dev/null
+++ b/public/api/documents/11.json
@@ -0,0 +1,9 @@
+{
+    "data": {
+        "type": "document",
+        "id": 11,
+        "attributes": {
+            "title": "Fahrschein-4.pdf"
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/api/documents/12.json b/public/api/documents/12.json
new file mode 100644
index 0000000..3762f7d
--- /dev/null
+++ b/public/api/documents/12.json
@@ -0,0 +1,9 @@
+{
+    "data": {
+        "type": "document",
+        "id": 12,
+        "attributes": {
+            "title": "Fahrschein-5.pdf"
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/api/documents/8.json b/public/api/documents/8.json
new file mode 100644
index 0000000..21bfd44
--- /dev/null
+++ b/public/api/documents/8.json
@@ -0,0 +1,9 @@
+{
+    "data": {
+        "type": "document",
+        "id": 8,
+        "attributes": {
+            "title": "Fahrschein-1.pdf"
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/api/documents/9.json b/public/api/documents/9.json
new file mode 100644
index 0000000..2600f05
--- /dev/null
+++ b/public/api/documents/9.json
@@ -0,0 +1,9 @@
+{
+    "data": {
+        "type": "document",
+        "id": 9,
+        "attributes": {
+            "title": "Fahrschein-2.pdf"
+        }
+    }
+}
\ No newline at end of file
diff --git a/public/api/nodes.json b/public/api/nodes.json
index 02b8646..9b765fe 100644
--- a/public/api/nodes.json
+++ b/public/api/nodes.json
@@ -2,27 +2,30 @@
   "data": [
     {
       "id": 1,
-      "type": "document",
+      "type": "node",
       "attributes": {
         "model": "document",
         "title": "invoice.pdf"
       }
     }, {
       "id": 2,
-      "type": "document",
+      "type": "node",
       "attributes": {
+        "model": "document",
         "title": "payment_1.pdf"
       }
     }, {
       "id": 3,
-      "type": "document",
+      "type": "node",
       "attributes": {
+        "model": "document",
         "title": "payment_2.pdf"
       }
     }, {
       "id": 4,
-      "type": "folder",
+      "type": "node",
       "attributes": {
+        "model": "folder",
         "title": "My Documents"
       }
     }
diff --git a/public/api/nodes/4.json b/public/api/nodes/4.json
index c97eb95..f4eda85 100644
--- a/public/api/nodes/4.json
+++ b/public/api/nodes/4.json
@@ -21,6 +21,13 @@
             "attributes": {
               "title": "Contract 2.pdf"
             }
+          },
+          {
+            "id": 7,
+            "type": "node",
+            "attributes": {
+              "title": "BVG Tickets"
+            }
           }
         ]
       }
diff --git a/public/api/nodes/7.json b/public/api/nodes/7.json
new file mode 100644
index 0000000..bc29686
--- /dev/null
+++ b/public/api/nodes/7.json
@@ -0,0 +1,50 @@
+{
+  "data": {
+    "type": "node",
+    "id": 7,
+    "attributes": {
+      "title": "BVG Tickets"
+    },
+    "relationships": {
+      "children": {
+        "data": [
+          {
+            "id": 8,
+            "type": "document",
+            "attributes": {
+                "title": "Fahrschein-1.pdf"
+              }
+          },
+          {
+            "id": 9,
+            "type": "document",
+            "attributes": {
+              "title": "Fahrschein-2.pdf"
+            }
+          },
+          {
+            "id": 10,
+            "type": "document",
+            "attributes": {
+              "title": "Fahrschein-3.pdf"
+            }
+          },
+          {
+            "id": 11,
+            "type": "document",
+            "attributes": {
+              "title": "Fahrschein-4.pdf"
+            }
+          },
+          {
+            "id": 12,
+            "type": "document",
+            "attributes": {
+              "title": "Fahrschein-5.pdf"
+            }
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/public/assets/favicon.ico b/public/assets/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..1557eb7ed755b2119588006987cb7b522afe7ca4
GIT binary patch
literal 3902
zcmchae@I<r7{{M`H;p!(Sdzar%+i!(ktk^lm8c{Yu@&qO8~r6X{HH%cOmt{;?=B;m
zZ5JGo3t46>vuP&HrdLs!noVjjHJvzfQ2w}RXg9^D?{jz0;ha0~_3j3p%g6UU=brcZ
zocDQu+#`_zpZGY!-zO<Kgy;z(N(S-ZB_P-3FdrdWMk)An#Ky)x6&)RYGAb&n4qQOJ
z349nC8CeF>5!2vLTu*IcVq&7<F@alvBO)Snz{zsm#qTIDg6BQO^W{36k0FKyYyxL&
z^pU5grgW5-mn&Xvxr;VmAjZ?axU~1caTIOuC{Cpmx5MGkQCV53b-LHL(B`BzwzoPw
zC%{%lMh0hQX6j=3;w~yG;<&gtT|30H!0B}^;GS2&c41*5+iW(@&(GJz@WtKG(7-J%
zEu5N~>fZK!PkqK5N<nOUMMVXVj*jy9__$y0*49>M+kt@r&dtr$`galk&At4IiHXBj
ztJT>~y#Bg7Iy%%CBO@bRT3V|0ufqSh){pbIva_?*Hvh#fIak_CDS5y+s$fliq;VVY
z-Sq$EhRY#)hWPOu$K<(uaia}yZEfk+Sao$ZYxkG^`t8cWd*Vj@jIZvxx;h>j8q&FC
zuSrNqP;=Vc-0U^yF1O9)w)x_gb+@**#>>mgJU2I|^EWm&s(tV7?)JsK1@{4X@9pQ7
zwK_dL&FkyyPR7Q@cyn`8^~*RE6cjl7-rnBsi<`s4!xP|jcynV7a93BC>J@)yXD3@M
z7S%2L?99xJGxu$6Z92ECbBXT`=14lO{Ug^s&9$1E8l6}AFL{WMkLQVr37x;GsfkS{
zlg=&k!`&<An70`y|McW8D=Xubl@--3<6T@_tj5a8$>EKS4V~X?HnZ$0${KfH-^z0!
zpU<E^vX^^!cvv^alIz;qTGgw>sIRZrxfd4~S-ZD+aBm}bfr#<3yIbbc<m9B<U-9<z
z^f2CA9&pPwc~0$bYj1Ba_x1I$snf(M=Tq2l&cKFG3><JSfP+p2arn{jo3h5x_t&*<
z@eU3S>b$eFvz(Te_JCLEdsbE!+wFGMzqGc*X_hpmI$}Bttl%?n1$+m3X@_pm8R!op
z#*#AE<hN7CRas9Gv!tZNqgU})RaH6Ni>r&A)R@Fn3y0Qy3FlwB+<ml3qjXIAj`pX-
zExB7*SWvy<m%U7h@2!;mR`P7UZRLQ^1DHOArwN<~(r=gBc-go?*XafEx{iZ+d3nFN
zkFn%nuQB%Y4C(3VeB5@NsSU1n&<T1#7qRi8k%Qk3-VVzSOH!mtiFc$|@t(3H?<xw(
z$;m$TS^F%Z=1``u;kydH2S0)VV#9!egDZnCDL(fSG2YR}@uz;c;xN;<E^jYN8yE)T
zV3Pi#U+7tPuX2vPt_n_h$9?ENOPjD4!|u=JYjE|uykjVDf?Hq;+3<2;-4!5?-Cuvu
zyFvH8LvW3PpTVzS8r%VQ={YZYnfpoL8}RTsh>hYy=0ksA4Kqyu@lJs`a2MRe>hs~i
z+R4N?T){JJfc?f{8~0pC-sFAM0Ph<Z-`n^w&8l8;-|#`L-h%hoNAL`<fe#S>GWY>p
zgXb%hXTb^lPY|j$P%2CZ;C-1E=mMNSfmPr@{~zV~kX?MeyF;}5H&Kn9C~h9~6CDA8
krvVWeHK4lZA@?|s)3_f5_9MnTO2iCAY$F^-7WzZzUvoo2`2YX_

literal 0
HcmV?d00001

-- 
GitLab