From 033d7261ff98a4b02b9a212bcb1ceddad5bd96f4 Mon Sep 17 00:00:00 2001
From: Noel Mace <contact@noelmace.com>
Date: Sun, 25 Nov 2018 20:32:59 +0100
Subject: [PATCH] feat(ngg-solution): create solution from branch
 step-02-solution

---
 angular.json                                  |  99 +++++++++++++++++
 steps/ngg-solution/browserslist               |  11 ++
 steps/ngg-solution/src/app/app.component.css  |  46 ++++++++
 steps/ngg-solution/src/app/app.component.html |  18 ++++
 steps/ngg-solution/src/app/app.component.ts   |  14 +++
 steps/ngg-solution/src/app/app.module.ts      |  44 ++++++++
 .../src/app/home/home.component.css           |   0
 .../src/app/home/home.component.html          |   3 +
 .../src/app/home/home.component.ts            |  20 ++++
 steps/ngg-solution/src/app/home/index.ts      |   1 +
 steps/ngg-solution/src/app/index.ts           |   2 +
 steps/ngg-solution/src/assets/.gitkeep        |   0
 steps/ngg-solution/src/assets/.npmignore      |   0
 .../src/assets/images/bg_right.png            | Bin 0 -> 16377 bytes
 .../src/assets/images/icon-delete.svg         |   1 +
 .../src/assets/images/icon-edit.svg           |   1 +
 .../src/assets/images/icon-mail.svg           |   1 +
 .../src/assets/images/icon-maps.svg           |  23 ++++
 .../src/assets/images/icon-phone.svg          |   1 +
 .../src/assets/images/logo-sfeir.svg          |  18 ++++
 .../src/assets/images/search-icon.svg         |  16 +++
 .../src/environments/environment.prod.ts      |   3 +
 .../src/environments/environment.ts           |   8 ++
 steps/ngg-solution/src/favicon.ico            | Bin 0 -> 5430 bytes
 steps/ngg-solution/src/index.html             |  21 ++++
 steps/ngg-solution/src/main.ts                |  12 +++
 steps/ngg-solution/src/polyfills.ts           |  80 ++++++++++++++
 steps/ngg-solution/src/styles.css             | 101 ++++++++++++++++++
 steps/ngg-solution/tsconfig.app.json          |  11 ++
 29 files changed, 555 insertions(+)
 create mode 100644 steps/ngg-solution/browserslist
 create mode 100644 steps/ngg-solution/src/app/app.component.css
 create mode 100644 steps/ngg-solution/src/app/app.component.html
 create mode 100644 steps/ngg-solution/src/app/app.component.ts
 create mode 100644 steps/ngg-solution/src/app/app.module.ts
 create mode 100644 steps/ngg-solution/src/app/home/home.component.css
 create mode 100644 steps/ngg-solution/src/app/home/home.component.html
 create mode 100644 steps/ngg-solution/src/app/home/home.component.ts
 create mode 100644 steps/ngg-solution/src/app/home/index.ts
 create mode 100644 steps/ngg-solution/src/app/index.ts
 create mode 100644 steps/ngg-solution/src/assets/.gitkeep
 create mode 100644 steps/ngg-solution/src/assets/.npmignore
 create mode 100644 steps/ngg-solution/src/assets/images/bg_right.png
 create mode 100644 steps/ngg-solution/src/assets/images/icon-delete.svg
 create mode 100644 steps/ngg-solution/src/assets/images/icon-edit.svg
 create mode 100644 steps/ngg-solution/src/assets/images/icon-mail.svg
 create mode 100644 steps/ngg-solution/src/assets/images/icon-maps.svg
 create mode 100644 steps/ngg-solution/src/assets/images/icon-phone.svg
 create mode 100644 steps/ngg-solution/src/assets/images/logo-sfeir.svg
 create mode 100644 steps/ngg-solution/src/assets/images/search-icon.svg
 create mode 100644 steps/ngg-solution/src/environments/environment.prod.ts
 create mode 100644 steps/ngg-solution/src/environments/environment.ts
 create mode 100644 steps/ngg-solution/src/favicon.ico
 create mode 100644 steps/ngg-solution/src/index.html
 create mode 100644 steps/ngg-solution/src/main.ts
 create mode 100644 steps/ngg-solution/src/polyfills.ts
 create mode 100644 steps/ngg-solution/src/styles.css
 create mode 100644 steps/ngg-solution/tsconfig.app.json

diff --git a/angular.json b/angular.json
index a91a4abb..cc899582 100644
--- a/angular.json
+++ b/angular.json
@@ -410,6 +410,105 @@
           }
         }
       }
+    },
+    "ngg-solution": {
+      "root": "steps/ngg-solution/",
+      "sourceRoot": "steps/ngg-solution/src",
+      "projectType": "application",
+      "prefix": "app",
+      "schematics": {},
+      "architect": {
+        "build": {
+          "builder": "@angular-devkit/build-angular:browser",
+          "options": {
+            "outputPath": "dist/ngg-solution",
+            "index": "steps/ngg-solution/src/index.html",
+            "main": "steps/ngg-solution/src/main.ts",
+            "polyfills": "steps/ngg-solution/src/polyfills.ts",
+            "tsConfig": "steps/ngg-solution/tsconfig.app.json",
+            "assets": [
+              "steps/ngg-solution/src/favicon.ico",
+              "steps/ngg-solution/src/assets"
+            ],
+            "styles": [
+              "steps/ngg-solution/src/styles.css"
+            ],
+            "scripts": []
+          },
+          "configurations": {
+            "production": {
+              "fileReplacements": [
+                {
+                  "replace": "steps/ngg-solution/src/environments/environment.ts",
+                  "with": "steps/ngg-solution/src/environments/environment.prod.ts"
+                }
+              ],
+              "optimization": true,
+              "outputHashing": "all",
+              "sourceMap": false,
+              "extractCss": true,
+              "namedChunks": false,
+              "aot": true,
+              "extractLicenses": true,
+              "vendorChunk": false,
+              "buildOptimizer": true,
+              "budgets": [
+                {
+                  "type": "initial",
+                  "maximumWarning": "2mb",
+                  "maximumError": "5mb"
+                }
+              ]
+            }
+          }
+        },
+        "serve": {
+          "builder": "@angular-devkit/build-angular:dev-server",
+          "options": {
+            "browserTarget": "ngg-solution:build"
+          },
+          "configurations": {
+            "production": {
+              "browserTarget": "ngg-solution:build:production"
+            }
+          }
+        },
+        "extract-i18n": {
+          "builder": "@angular-devkit/build-angular:extract-i18n",
+          "options": {
+            "browserTarget": "ngg-solution:build"
+          }
+        },
+        "test": {
+          "builder": "@angular-devkit/build-angular:karma",
+          "options": {
+            "main": "steps/ngg-solution/src/test.ts",
+            "polyfills": "steps/ngg-solution/src/polyfills.ts",
+            "tsConfig": "steps/ngg-solution/tsconfig.spec.json",
+            "karmaConfig": "steps/ngg-solution/karma.conf.js",
+            "styles": [
+              "steps/ngg-solution/src/styles.css"
+            ],
+            "scripts": [],
+            "assets": [
+              "steps/ngg-solution/src/favicon.ico",
+              "steps/ngg-solution/src/assets"
+            ]
+          }
+        },
+        "lint": {
+          "builder": "@angular-devkit/build-angular:tslint",
+          "options": {
+            "tsConfig": [
+              "steps/ngg-solution/tsconfig.app.json",
+              "steps/ngg-solution/tsconfig.spec.json"
+            ],
+            "exclude": [
+              "**/node_modules/**"
+            ]
+          }
+        }
+      }
     }
   },
   "defaultProject": "angular-200",
diff --git a/steps/ngg-solution/browserslist b/steps/ngg-solution/browserslist
new file mode 100644
index 00000000..37371cb0
--- /dev/null
+++ b/steps/ngg-solution/browserslist
@@ -0,0 +1,11 @@
+# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
+# For additional information regarding the format and rule options, please see:
+# https://github.com/browserslist/browserslist#queries
+#
+# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed
+
+> 0.5%
+last 2 versions
+Firefox ESR
+not dead
+not IE 9-11
\ No newline at end of file
diff --git a/steps/ngg-solution/src/app/app.component.css b/steps/ngg-solution/src/app/app.component.css
new file mode 100644
index 00000000..df3c0b92
--- /dev/null
+++ b/steps/ngg-solution/src/app/app.component.css
@@ -0,0 +1,46 @@
+mat-toolbar.extend-toolbar {
+  background-color: #0168AB;
+  background-image: url('/assets/images/bg_right.png');
+  background-repeat: no-repeat;
+  background-position: right;
+  top: 0px;
+  box-shadow: 0 2px 5px 0 rgba(0,0,0,.26);
+  width: 100%;
+  z-index: 1;
+  color: white;
+  margin-bottom: 10px;
+}
+
+mat-toolbar .flex {
+  flex: 1 1 auto;
+}
+
+mat-toolbar a {
+  color: inherit;
+  text-decoration: none;
+  height: 100%;
+  margin: 0px 10px 0px 10px;
+  border-bottom: 2px solid transparent;
+  font-size: 1.1em;
+  font-weight: normal;
+  font-family: 'Open Sans', sans-serif;
+}
+
+mat-toolbar a:not(.active):hover {
+  border-bottom: 2px solid white;
+}
+
+mat-toolbar a img {
+  height: 100%;
+  margin-left: -60px;
+}
+
+mat-toolbar-row:nth-child(1) {
+  margin-bottom: 66px;
+}
+mat-toolbar-row:nth-child(2) {
+  padding-left: 30px;
+  text-align: center;
+  height: 56px;
+  margin-top: 56px;
+}
diff --git a/steps/ngg-solution/src/app/app.component.html b/steps/ngg-solution/src/app/app.component.html
new file mode 100644
index 00000000..33fc45ee
--- /dev/null
+++ b/steps/ngg-solution/src/app/app.component.html
@@ -0,0 +1,18 @@
+<mat-toolbar class="extend-toolbar">
+  <span>
+    <a href="#/home">
+      <img src="assets/images/logo-sfeir.svg" aria-label="sfeir" alt="Sfeir">
+    </a>
+  </span>
+
+  <span class="flex"></span>
+
+  <span>
+    <a href="#/locator">Maps</a>
+    <a href="#/people">List</a>
+  </span>
+</mat-toolbar>
+
+<mat-card align="center">
+  Hello {{ name }}
+</mat-card>
\ No newline at end of file
diff --git a/steps/ngg-solution/src/app/app.component.ts b/steps/ngg-solution/src/app/app.component.ts
new file mode 100644
index 00000000..69c2609e
--- /dev/null
+++ b/steps/ngg-solution/src/app/app.component.ts
@@ -0,0 +1,14 @@
+import { Component } from '@angular/core';
+
+@Component({
+    selector: 'sfeir-app',
+    templateUrl: 'app.component.html',
+    styleUrls: ['app.component.css']
+})
+export class PeopleAppComponent {
+    name: string;
+
+    constructor() {
+        this.name = 'Angular 2';
+    }
+}
diff --git a/steps/ngg-solution/src/app/app.module.ts b/steps/ngg-solution/src/app/app.module.ts
new file mode 100644
index 00000000..e3755b81
--- /dev/null
+++ b/steps/ngg-solution/src/app/app.module.ts
@@ -0,0 +1,44 @@
+// CORE DEPS
+import { NgModule } from '@angular/core';
+import { BrowserModule } from '@angular/platform-browser';
+// MATERIAL DESIGN MODULES
+import {
+  MatToolbarModule,
+  MatCardModule,
+  MatTabsModule,
+  MatButtonModule,
+  MatInputModule,
+  MatCheckboxModule,
+  MatRadioModule,
+  MatIconModule,
+  MatListModule
+} from '@angular/material';
+import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
+
+import { PeopleAppComponent } from './app.component';
+import { HomeComponent } from './home';
+
+@NgModule({
+  imports: [
+    BrowserModule,
+    BrowserAnimationsModule,
+    MatToolbarModule,
+    MatCardModule,
+    MatTabsModule,
+    MatButtonModule,
+    MatInputModule,
+    MatCheckboxModule,
+    MatRadioModule,
+    MatIconModule,
+    MatListModule
+  ],
+  declarations: [
+    PeopleAppComponent,
+    HomeComponent
+  ],
+  providers: [ ],
+  bootstrap: [
+    HomeComponent
+  ]
+})
+export class AppModule { }
diff --git a/steps/ngg-solution/src/app/home/home.component.css b/steps/ngg-solution/src/app/home/home.component.css
new file mode 100644
index 00000000..e69de29b
diff --git a/steps/ngg-solution/src/app/home/home.component.html b/steps/ngg-solution/src/app/home/home.component.html
new file mode 100644
index 00000000..29e635f2
--- /dev/null
+++ b/steps/ngg-solution/src/app/home/home.component.html
@@ -0,0 +1,3 @@
+<mat-card align="center">
+  Hello {{ name }}
+</mat-card>
diff --git a/steps/ngg-solution/src/app/home/home.component.ts b/steps/ngg-solution/src/app/home/home.component.ts
new file mode 100644
index 00000000..271e9a99
--- /dev/null
+++ b/steps/ngg-solution/src/app/home/home.component.ts
@@ -0,0 +1,20 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+    selector: 'sfeir-home',
+    templateUrl: 'home.component.html',
+    styleUrls: ['home.component.css']
+})
+export class HomeComponent implements OnInit {
+    name:string;
+    
+    constructor() {
+        this.name = 'Angular 2';
+    }
+
+    /**
+     * OnInit implementation
+     */
+    ngOnInit() {
+    }
+}
diff --git a/steps/ngg-solution/src/app/home/index.ts b/steps/ngg-solution/src/app/home/index.ts
new file mode 100644
index 00000000..e00834fc
--- /dev/null
+++ b/steps/ngg-solution/src/app/home/index.ts
@@ -0,0 +1 @@
+export * from './home.component';
\ No newline at end of file
diff --git a/steps/ngg-solution/src/app/index.ts b/steps/ngg-solution/src/app/index.ts
new file mode 100644
index 00000000..875bdb2f
--- /dev/null
+++ b/steps/ngg-solution/src/app/index.ts
@@ -0,0 +1,2 @@
+export * from './app.component';
+export * from './app.module';
diff --git a/steps/ngg-solution/src/assets/.gitkeep b/steps/ngg-solution/src/assets/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/steps/ngg-solution/src/assets/.npmignore b/steps/ngg-solution/src/assets/.npmignore
new file mode 100644
index 00000000..e69de29b
diff --git a/steps/ngg-solution/src/assets/images/bg_right.png b/steps/ngg-solution/src/assets/images/bg_right.png
new file mode 100644
index 0000000000000000000000000000000000000000..449e4bc82c2a6aecd449bbfcf9aad413ffc64968
GIT binary patch
literal 16377
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

literal 0
HcmV?d00001

diff --git a/steps/ngg-solution/src/assets/images/icon-delete.svg b/steps/ngg-solution/src/assets/images/icon-delete.svg
new file mode 100644
index 00000000..c665bde5
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/icon-delete.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" class="style-scope iron-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g class="style-scope iron-icon"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" class="style-scope iron-icon"></path></g></svg>
diff --git a/steps/ngg-solution/src/assets/images/icon-edit.svg b/steps/ngg-solution/src/assets/images/icon-edit.svg
new file mode 100644
index 00000000..bb07333e
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/icon-edit.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" class="style-scope iron-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g class="style-scope iron-icon"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z" class="style-scope iron-icon"></path></g></svg>
diff --git a/steps/ngg-solution/src/assets/images/icon-mail.svg b/steps/ngg-solution/src/assets/images/icon-mail.svg
new file mode 100644
index 00000000..040a7e7f
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/icon-mail.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="100%" height="100%" viewBox="0 0 24 24" fit="" preserveAspectRatio="xMidYMid meet" style="pointer-events: none; display: block;"><path d="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z"></path></svg>
diff --git a/steps/ngg-solution/src/assets/images/icon-maps.svg b/steps/ngg-solution/src/assets/images/icon-maps.svg
new file mode 100644
index 00000000..989697e2
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/icon-maps.svg
@@ -0,0 +1,23 @@
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100%" height="100%" viewBox="0 0 374.003 374.003" style="pointer-events: none; display: block;" xml:space="preserve" fit="" preserveAspectRatio="xMidYMid meet">
+  <g>
+    <g>
+      <g>
+        <path d="M170.944,165.64H60c-4.454,0-8.372,2.945-9.607,7.225l-21.289,73.714l149.265,16.332l11.713-56.059
+        C182.792,193.835,176.085,179.899,170.944,165.64z"></path>
+        <path d="M310.354,277.353l44.828,4.904l-13.385-46.347c-1.798,2.646-3.587,5.224-5.349,7.702
+        C327.392,256.364,318.342,267.81,310.354,277.353z"></path>
+        <path d="M213.143,243.164l-4.812,23.026l24.23,2.649c-6.084-7.563-12.56-16.013-19.047-25.146
+        C213.393,243.519,213.267,243.339,213.143,243.164z"></path>
+        <path d="M0.393,345.998c-0.872,3.021-0.274,6.271,1.615,8.785c1.889,2.513,4.849,3.99,7.992,3.99h148.34l13.864-66.355
+        L20.655,275.835L0.393,345.998z"></path>
+        <path d="M364.182,313.421l-162.015-17.729l-13.181,63.079h174.997c0.007,0,0.014,0,0.02,0c5.523,0,10-4.479,10-10
+        c0-1.197-0.21-2.346-0.595-3.406L364.182,313.421z"></path>
+        <path d="M270.826,290.064c1.064,1.139,2.562,1.785,4.126,1.785c1.565,0,3.058-0.646,4.133-1.785
+        c9.111-9.693,27.104-29.752,45.135-55.137c22.714-31.978,49.783-78.865,49.783-120.65c0-54.617-44.433-99.047-99.051-99.047
+        c-54.612,0-99.046,44.43-99.046,99.047c0,41.814,27.104,88.732,49.841,120.732C243.773,260.392,261.724,280.392,270.826,290.064z
+        M274.952,52.499c33.35,0,60.479,27.137,60.479,60.486c0,33.336-27.13,60.486-60.479,60.486
+        c-33.344,0-60.477-27.15-60.477-60.486C214.477,79.636,241.607,52.499,274.952,52.499z"></path>
+      </g>
+    </g>
+   </g>
+ </svg>
diff --git a/steps/ngg-solution/src/assets/images/icon-phone.svg b/steps/ngg-solution/src/assets/images/icon-phone.svg
new file mode 100644
index 00000000..15ac4a3e
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/icon-phone.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="100%" height="100%" viewBox="0 0 24 24" fit="" preserveAspectRatio="xMidYMid meet" style="pointer-events: none; display: block;"><path d="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"></path></svg>
diff --git a/steps/ngg-solution/src/assets/images/logo-sfeir.svg b/steps/ngg-solution/src/assets/images/logo-sfeir.svg
new file mode 100644
index 00000000..9d6e4c3e
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/logo-sfeir.svg
@@ -0,0 +1,18 @@
+<svg id="logo.svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="28" viewBox="0 0 190 28">
+  <defs>
+    <style>
+      .cls-1, .cls-2 {
+        fill: #fff;
+        fill-rule: evenodd;
+      }
+
+      .cls-2 {
+        opacity: 0.4;
+      }
+    </style>
+  </defs>
+  <path id="Shape_32_copy_copie_copy" data-name="Shape 32 copy copie copy" class="cls-1" d="M200.862,55.1c-1.321,1.487-5.182,2.635-7.53,2.635A12.37,12.37,0,1,1,206,45.366a12.964,12.964,0,0,1-2,6.672s-1.211,1.438-2,2.2A3.3,3.3,0,0,1,200.862,55.1Zm-7.53-19.762a10.033,10.033,0,1,0,10.274,10.03A10.154,10.154,0,0,0,193.332,35.336Z" transform="translate(-54 -31)"/>
+  <path id="Ellipse_26_copy_9" data-name="Ellipse 26 copy 9" class="cls-2" d="M194,53a11.251,11.251,0,0,1-6-2,4.118,4.118,0,0,1-1-2,9.551,9.551,0,0,0,2.6-.69c1.558-.618,2.024-0.834,2.024-0.834l0.111-.962a3.086,3.086,0,0,1-.958-1.954c-0.365.1-.486-0.411-0.507-0.737s-0.212-1.3.234-1.209a4.621,4.621,0,0,1-.125-1.1,3.06,3.06,0,0,1,2.923-2.521,2.8,2.8,0,0,1,2.911,2.52,4.706,4.706,0,0,1-.13,1.1c0.445-.088.252,0.894,0.23,1.209s-0.143.836-.507,0.735a3.074,3.074,0,0,1-.959,1.951l0.11,0.862a14.552,14.552,0,0,0,2.024.913,14.052,14.052,0,0,0,2.338.761L200,49A6.09,6.09,0,0,1,194,53Z" transform="translate(-54 -31)"/>
+  <path id="people_copy_4" data-name="people copy 4" class="cls-1" d="M156.406,50.948a6.619,6.619,0,0,0,6.778-6.936,7.274,7.274,0,0,0-7.351-7.178c-1.932,0-1.167-.1-3.333,0H150V56h2.5V51C153.637,51,154.53,50.948,156.406,50.948ZM155.833,48.5H152.5V39.333h3.333c2.757,0,5.106,1.691,5.106,4.679S158.59,48.5,155.833,48.5Zm16.25,2.448c2.217,0,6.25.052,6.25,0.052V48.5H172.5c-2.306,0-4.829-.792-5-3.333h10.833V43.5a6.732,6.732,0,0,0-1.7-4.348,6.087,6.087,0,0,0-4.969-2.319c-4.845,0-6.581,3.27-6.581,7.179A6.609,6.609,0,0,0,172.083,50.948Zm3.75-8.281H167.5c0.114-2.038,1.239-3.333,4.167-3.333C174.793,39.333,175.805,40.684,175.833,42.667ZM226.667,51c1.25,0,1.93.008,3.333,0V48.5c-0.812,0-1.9,0-2.5,0-0.938,0-1.667-1.495-1.667-2.5V31h-2.5V47.667A3.135,3.135,0,0,0,226.667,51Zm-11.927-.052a6.619,6.619,0,0,0,6.777-6.936,7.274,7.274,0,0,0-7.35-7.178c-1.933,0-1.168-.1-3.334,0h-2.5V56h2.5V51C211.97,51,212.864,50.948,214.74,50.948ZM214.167,48.5h-3.334V39.333h3.334c2.757,0,5.1,1.691,5.1,4.679S216.924,48.5,214.167,48.5Zm23.583,2.448c2.217,0,6.25.052,6.25,0.052V48.5h-5.833c-2.306,0-4.83-.792-5-3.333H244V43.5a6.732,6.732,0,0,0-1.7-4.348,6.09,6.09,0,0,0-4.97-2.319c-4.746,0-6.58,3.27-6.58,7.179A6.608,6.608,0,0,0,237.75,50.948Zm3.75-8.281h-8.333c0.113-2.038,1.239-3.333,4.166-3.333C240.46,39.333,241.472,40.684,241.5,42.667Z" transform="translate(-54 -31)"/>
+  <image width="86" height="28" xlink:href="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAAcCAMAAADMS7jPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACHFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAkud5oAAAAsnRSTlMAYbfd59m4gysQu+B5iZSEAqdDnUB4kI6BBD7fws731qNH7QOMsRUWx+6K+OiGZWhbAa9cBlZmCx9KPSLGHRky0mANqrL0zbyND6itrjSzPIcTn+L++1IpMT8aWNoYsCjstKDcoVfF2+PzggfkYklQLh5jeiMSXWxw1crvtWq6dKlpBQha9ktOTU/85lP5LdHIOyEnSJLUtrnYVEXAWTU4m19zrNOcMDk6QRRCEfrQ/czD8vPHWgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAKoSURBVEjHrZYJVxJRFMcvSSpZRkaikpZaSGkolWRZVmCSG0YahWWLW5bilmaLpWm0b1jZaitlVrbcT9ibeU+YYZg5SPzP4dz77n33d97c+2YOAApSLUlQL01MSo6c1SxLWS5buiKV00pthNQqpEqLXLmapHThwTXper0+PQNYaaa0LIuEDWuzc9bJHGg9yeeGBxkO8qjNl5ZtQNxIjNEogy0wbdosCRbytCIOu8VcXGKRlm1F3AaK2i4NlRZbMxh2Ryhaptu5qzyTNno3YhZELe2eCuZZGHZvsN/7+EdQ7wew2SsPIFY5HI6DANU1tSHVqQDqnZWcnEmkqMHpPASuw41NRwx2N0c5yrDHKNRWxfqNHtLRBR9TAJpRqBqA48w9QcrMZAQtaro+yXFOibHkofH0mda6NgMIsW0AFSJsO+kgcx1kZwdi51nid51DbJZiPSR13sZ5GvLrVpl7EFO9Xm8vWfS5BeoHGLCazYP6IJbowpB2+OIISLGXEC+LhnAFsV5pSOUCrPCNEWNViFc9wjIyP7cSNi2ELQVZLN/A0WtlMWBNII+FEb5JTdfHNOHY6nHBBatVSbCjSli40Ujnm2cNw4ov2LgE61DEwkRJO72AHWKs+IK1LhZLNHkzkVT6JkXY7lu37wR1NzkGLNHgPfodjX5kUWHhPuKDuGEtC1+g3IeIj+J32sdPiv1TT589J72dFo9MU5n4IqiX1kVhCwTD5g4LrxBf043iC2Zn5W8Q3xIzQ40c9l2wruo9H+hCnKEbW0TYD6y8FzGbmI/USLED/Eo79OmzKRDo/NLH0l/9fhf1Jmb934JqmGJ5jW6unxjjHG9C+s6wP1zGYYiTfhpdsww778tJyP9/Iq9fhb55Div/PyEmzfO03zDdw+lPvE77t4hT4B9YxNXbv7utngAAAABJRU5ErkJggg=="/>
+</svg>
diff --git a/steps/ngg-solution/src/assets/images/search-icon.svg b/steps/ngg-solution/src/assets/images/search-icon.svg
new file mode 100644
index 00000000..92e95a18
--- /dev/null
+++ b/steps/ngg-solution/src/assets/images/search-icon.svg
@@ -0,0 +1,16 @@
+<svg id="Loupe.svg" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 48.656 47.031" fit="" preserveAspectRatio="xMidYMid meet" style="pointer-events: none; display: block;">
+  <defs>
+    <style>
+      .cls-1, .cls-2 {
+        fill: #fff;
+        fill-rule: evenodd;
+      }
+
+      .cls-2 {
+        opacity: 0.4;
+      }
+    </style>
+  </defs>
+  <path id="Shape_32_copy_copie" data-name="Shape 32 copy copie" class="cls-1" d="M900.55,143.3c1.437,1.526,1.994,4,.8,5.457a4.155,4.155,0,0,1-5.958.039h0l-9.243-8.706c-2.148,2.5-8.42,4.423-12.236,4.423A20.758,20.758,0,1,1,894.5,123.757c0,3.848-1.588,9-3.253,11.2l9.306,8.346h0Zm-26.635-36.381a16.837,16.837,0,1,0,16.7,16.837A16.767,16.767,0,0,0,873.915,106.921Z" transform="translate(-853.344 -103)"></path>
+  <path id="Ellipse_26_copy_8" data-name="Ellipse 26 copy 8" class="cls-2" d="M874,139c-6.626,0-11-5-11-5s0.359-2.147,4-3a7.286,7.286,0,0,0,4-2.459l0.18-1.649a5.378,5.378,0,0,1-1.548-3.348c-0.59.173-.785-0.7-0.82-1.263-0.031-.539-0.341-2.224.379-2.072a8.284,8.284,0,0,1-.2-1.883,5.056,5.056,0,0,1,4.721-4.32,4.632,4.632,0,0,1,4.7,4.318,8.446,8.446,0,0,1-.21,1.882c0.72-.15.407,1.533,0.372,2.072-0.032.559-.231,1.433-0.819,1.26a5.353,5.353,0,0,1-1.549,3.342l0.178,1.478A13.541,13.541,0,0,0,881,131c3.6,1.1,4,3,4,3C884.78,134.308,879.8,139,874,139Z" transform="translate(-853.344 -103)"></path>
+</svg>
diff --git a/steps/ngg-solution/src/environments/environment.prod.ts b/steps/ngg-solution/src/environments/environment.prod.ts
new file mode 100644
index 00000000..3612073b
--- /dev/null
+++ b/steps/ngg-solution/src/environments/environment.prod.ts
@@ -0,0 +1,3 @@
+export const environment = {
+  production: true
+};
diff --git a/steps/ngg-solution/src/environments/environment.ts b/steps/ngg-solution/src/environments/environment.ts
new file mode 100644
index 00000000..00313f16
--- /dev/null
+++ b/steps/ngg-solution/src/environments/environment.ts
@@ -0,0 +1,8 @@
+// The file contents for the current environment will overwrite these during build.
+// The build system defaults to the dev environment which uses `environment.ts`, but if you do
+// `ng build --env=prod` then `environment.prod.ts` will be used instead.
+// The list of which env maps to which file can be found in `angular-cli.json`.
+
+export const environment = {
+  production: false
+};
diff --git a/steps/ngg-solution/src/favicon.ico b/steps/ngg-solution/src/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517
GIT binary patch
literal 5430
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

literal 0
HcmV?d00001

diff --git a/steps/ngg-solution/src/index.html b/steps/ngg-solution/src/index.html
new file mode 100644
index 00000000..af0fbc44
--- /dev/null
+++ b/steps/ngg-solution/src/index.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Angular2200</title>
+  <base href="/">
+
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="icon" type="image/x-icon" href="favicon.ico">
+  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+</head>
+<body>
+    <sfeir-home>
+      <div class="loader">
+        <svg class="circular">
+          <circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"/>
+        </svg>
+      </div>
+    </sfeir-home>
+</body>
+</html>
diff --git a/steps/ngg-solution/src/main.ts b/steps/ngg-solution/src/main.ts
new file mode 100644
index 00000000..c7b673cf
--- /dev/null
+++ b/steps/ngg-solution/src/main.ts
@@ -0,0 +1,12 @@
+import { enableProdMode } from '@angular/core';
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+
+import { AppModule } from './app/app.module';
+import { environment } from './environments/environment';
+
+if (environment.production) {
+  enableProdMode();
+}
+
+platformBrowserDynamic().bootstrapModule(AppModule)
+  .catch(err => console.error(err));
diff --git a/steps/ngg-solution/src/polyfills.ts b/steps/ngg-solution/src/polyfills.ts
new file mode 100644
index 00000000..ee8b84da
--- /dev/null
+++ b/steps/ngg-solution/src/polyfills.ts
@@ -0,0 +1,80 @@
+/**
+ * This file includes polyfills needed by Angular and is loaded before the app.
+ * You can add your own extra polyfills to this file.
+ *
+ * This file is divided into 2 sections:
+ *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
+ *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
+ *      file.
+ *
+ * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
+ *
+ * Learn more in https://angular.io/guide/browser-support
+ */
+
+/***************************************************************************************************
+ * BROWSER POLYFILLS
+ */
+
+/** IE9, IE10 and IE11 requires all of the following polyfills. **/
+// import 'core-js/es6/symbol';
+// import 'core-js/es6/object';
+// import 'core-js/es6/function';
+// import 'core-js/es6/parse-int';
+// import 'core-js/es6/parse-float';
+// import 'core-js/es6/number';
+// import 'core-js/es6/math';
+// import 'core-js/es6/string';
+// import 'core-js/es6/date';
+// import 'core-js/es6/array';
+// import 'core-js/es6/regexp';
+// import 'core-js/es6/map';
+// import 'core-js/es6/weak-map';
+// import 'core-js/es6/set';
+
+/**
+ * If the application will be indexed by Google Search, the following is required.
+ * Googlebot uses a renderer based on Chrome 41.
+ * https://developers.google.com/search/docs/guides/rendering
+ **/
+// import 'core-js/es6/array';
+
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
+// import 'classlist.js';  // Run `npm install --save classlist.js`.
+
+/** IE10 and IE11 requires the following for the Reflect API. */
+// import 'core-js/es6/reflect';
+
+/**
+ * Web Animations `@angular/platform-browser/animations`
+ * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
+ * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
+ **/
+// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
+
+/**
+ * By default, zone.js will patch all possible macroTask and DomEvents
+ * user can disable parts of macroTask/DomEvents patch by setting following flags
+ */
+
+ // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
+ // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
+ // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
+
+ /*
+ * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
+ * with the following flag, it will bypass `zone.js` patch for IE/Edge
+ */
+// (window as any).__Zone_enable_cross_context_check = true;
+
+/***************************************************************************************************
+ * Zone JS is required by default for Angular itself.
+ */
+import 'zone.js/dist/zone';  // Included with Angular CLI.
+
+
+/***************************************************************************************************
+ * APPLICATION IMPORTS
+ */
diff --git a/steps/ngg-solution/src/styles.css b/steps/ngg-solution/src/styles.css
new file mode 100644
index 00000000..15465c56
--- /dev/null
+++ b/steps/ngg-solution/src/styles.css
@@ -0,0 +1,101 @@
+@import "~@angular/material/prebuilt-themes/indigo-pink.css";
+
+body {
+  background: red;
+  padding: 0;
+  margin: 0;
+  font-family: 'Open Sans', sans-serif;
+  background-color: #FAFAFA;
+  -webkit-font-smoothing: antialiased;
+}
+* /deep/ * {
+  font-family: inherit;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: inherit;
+}
+h1, * /deep/ h1 {
+  font-size: 36px;
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+
+button[mat-fab], a[mat-fab] {
+  position: fixed;
+  bottom: 20px;
+  right: 20px;
+}
+
+[mat-fab] mat-icon {
+  font-size: 2em;
+  line-height: 18.6px;
+}
+
+.loader {
+  position: relative;
+  margin: 0 auto;
+  width: 100px;
+  transform: scale(1.5);
+}
+.loader:before {
+  content: '';
+  display: block;
+  padding-top: 100%;
+}
+
+.circular {
+  animation: rotate 2s linear infinite;
+  height: 100%;
+  transform-origin: center center;
+  width: 100%;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  margin: auto;
+}
+
+.path {
+  stroke-dasharray: 1, 200;
+  stroke-dashoffset: 0;
+  animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
+  stroke-linecap: round;
+}
+
+@keyframes rotate {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+@keyframes dash {
+  0% {
+    stroke-dasharray: 1, 200;
+    stroke-dashoffset: 0;
+  }
+  50% {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: -35px;
+  }
+  100% {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: -124px;
+  }
+}
+@keyframes color {
+  100%,
+  0% {
+    stroke: #d62d20;
+  }
+  40% {
+    stroke: #0057e7;
+  }
+  66% {
+    stroke: #008744;
+  }
+  80%,
+  90% {
+    stroke: #ffa700;
+  }
+}
diff --git a/steps/ngg-solution/tsconfig.app.json b/steps/ngg-solution/tsconfig.app.json
new file mode 100644
index 00000000..bb16c46a
--- /dev/null
+++ b/steps/ngg-solution/tsconfig.app.json
@@ -0,0 +1,11 @@
+{
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../out-tsc/app",
+    "types": []
+  },
+  "exclude": [
+    "test.ts",
+    "**/*.spec.ts"
+  ]
+}