From 7149647b729b2aa30d76346a7cc3da37c1c692ca Mon Sep 17 00:00:00 2001
From: Max
Date: Mon, 13 May 2019 15:50:36 +0200
Subject: Initial commit.
---
.env.example | 39 +
.gitattributes | 5 +
.gitignore | 13 +
app/Console/Kernel.php | 42 +
app/Exceptions/Handler.php | 53 +
.../Controllers/Auth/ForgotPasswordController.php | 32 +
app/Http/Controllers/Auth/LoginController.php | 39 +
app/Http/Controllers/Auth/RegisterController.php | 71 +
.../Controllers/Auth/ResetPasswordController.php | 39 +
app/Http/Controllers/Controller.php | 13 +
app/Http/Controllers/IndexController.php | 40 +
app/Http/Controllers/LookupController.php | 26 +
app/Http/Controllers/OfferController.php | 95 +
app/Http/Controllers/RSSController.php | 132 +
app/Http/Controllers/SearchController.php | 80 +
app/Http/Kernel.php | 62 +
app/Http/Middleware/EncryptCookies.php | 17 +
app/Http/Middleware/RedirectIfAuthenticated.php | 26 +
app/Http/Middleware/TrimStrings.php | 18 +
app/Http/Middleware/TrustProxies.php | 23 +
app/Http/Middleware/VerifyCsrfToken.php | 17 +
app/Libraries/TemplateFunction.php | 23 +
app/Libraries/Utility.php | 12 +
app/Providers/AppServiceProvider.php | 35 +
app/Providers/AuthServiceProvider.php | 30 +
app/Providers/BroadcastServiceProvider.php | 21 +
app/Providers/EventServiceProvider.php | 32 +
app/Providers/RouteServiceProvider.php | 73 +
app/Shop.php | 10 +
app/User.php | 29 +
artisan | 53 +
bootstrap/app.php | 55 +
bootstrap/cache/.gitignore | 2 +
composer.json | 62 +
composer.lock | 4118 ++++++++++++
config/app.php | 217 +
config/auth.php | 102 +
config/broadcasting.php | 59 +
config/cache.php | 94 +
config/database.php | 120 +
config/filesystems.php | 69 +
config/hashing.php | 20 +
config/logging.php | 70 +
config/mail.php | 123 +
config/queue.php | 86 +
config/services.php | 38 +
config/session.php | 197 +
config/view.php | 33 +
database/.gitignore | 1 +
database/factories/UserFactory.php | 23 +
.../2014_10_12_000000_create_users_table.php | 35 +
...4_10_12_100000_create_password_resets_table.php | 32 +
database/seeds/DatabaseSeeder.php | 16 +
package.json | 22 +
phpunit.xml | 31 +
public/.htaccess | 21 +
public/favicon.ico | Bin 0 -> 5242 bytes
public/font/css/open-iconic-bootstrap.css | 952 +++
public/font/css/open-iconic-bootstrap.less | 960 +++
public/font/css/open-iconic-bootstrap.min.css | 1 +
public/font/css/open-iconic-bootstrap.scss | 958 +++
public/font/css/open-iconic-bootstrap.styl | 954 +++
public/font/css/open-iconic-foundation.css | 1395 +++++
public/font/css/open-iconic-foundation.less | 1397 +++++
public/font/css/open-iconic-foundation.min.css | 1 +
public/font/css/open-iconic-foundation.scss | 1398 +++++
public/font/css/open-iconic-foundation.styl | 1392 +++++
public/font/css/open-iconic.css | 511 ++
public/font/css/open-iconic.less | 962 +++
public/font/css/open-iconic.min.css | 1 +
public/font/css/open-iconic.scss | 963 +++
public/font/css/open-iconic.styl | 733 +++
public/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes
public/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes
public/font/fonts/open-iconic.svg | 543 ++
public/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes
public/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes
public/img/feed-icon-gray.jpg | Bin 0 -> 26755 bytes
public/img/paw-400-400.png | Bin 0 -> 78321 bytes
public/img/rss-alt.svg | 3 +
public/img/rss.svg | 3 +
public/index.php | 60 +
public/js/app.js | 1 +
public/js/bootstrap-material-design.js | 6537 ++++++++++++++++++++
public/js/bootstrap.bundle.js | 6328 +++++++++++++++++++
public/js/bootstrap.bundle.js.map | 1 +
public/js/bootstrap.bundle.min.js | 7 +
public/js/bootstrap.bundle.min.js.map | 1 +
public/js/bootstrap.js | 3894 ++++++++++++
public/js/bootstrap.js.map | 1 +
public/js/bootstrap.min.js | 7 +
public/js/bootstrap.min.js.map | 1 +
public/js/jquery-3.2.1.slim.min.js | 4 +
public/js/popper.1.12.9.min.js | 5 +
public/robots.txt | 2 +
public/web.config | 23 +
readme.md | 59 +
resources/assets/js/app.js | 22 +
resources/assets/js/bootstrap.js | 56 +
.../assets/js/components/ExampleComponent.vue | 23 +
resources/assets/sass/_variables.scss | 18 +
resources/assets/sass/app.scss | 14 +
resources/lang/de/pagination.php | 20 +
resources/lang/en/auth.php | 19 +
resources/lang/en/pagination.php | 19 +
resources/lang/en/passwords.php | 22 +
resources/lang/en/validation.php | 121 +
resources/views/index.blade.php | 162 +
resources/views/layouts/base.blade.php | 91 +
resources/views/offer.blade.php | 167 +
resources/views/paginate.blade.php | 36 +
resources/views/search.blade.php | 175 +
resources/views/snippets/footer.blade.php | 47 +
resources/views/snippets/navbar.blade.php | 61 +
resources/views/snippets/sortbuttons.blade.php | 109 +
.../views/vendor/pagination/bootstrap-4.blade.php | 36 +
.../views/vendor/pagination/default.blade.php | 36 +
.../views/vendor/pagination/semantic-ui.blade.php | 36 +
.../vendor/pagination/simple-bootstrap-4.blade.php | 17 +
.../vendor/pagination/simple-default.blade.php | 17 +
routes/api.php | 18 +
routes/channels.php | 16 +
routes/console.php | 18 +
routes/web.php | 33 +
server.php | 21 +
storage/app/.gitignore | 3 +
storage/app/public/.gitignore | 2 +
storage/framework/.gitignore | 8 +
storage/framework/cache/.gitignore | 2 +
storage/framework/sessions/.gitignore | 2 +
storage/framework/testing/.gitignore | 2 +
storage/framework/views/.gitignore | 2 +
storage/logs/.gitignore | 2 +
tests/CreatesApplication.php | 25 +
tests/Feature/ExampleTest.php | 21 +
tests/TestCase.php | 10 +
tests/Unit/ExampleTest.php | 19 +
webpack.mix.js | 15 +
138 files changed, 38447 insertions(+)
create mode 100644 .env.example
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 app/Console/Kernel.php
create mode 100644 app/Exceptions/Handler.php
create mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php
create mode 100644 app/Http/Controllers/Auth/LoginController.php
create mode 100644 app/Http/Controllers/Auth/RegisterController.php
create mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php
create mode 100644 app/Http/Controllers/Controller.php
create mode 100644 app/Http/Controllers/IndexController.php
create mode 100644 app/Http/Controllers/LookupController.php
create mode 100644 app/Http/Controllers/OfferController.php
create mode 100644 app/Http/Controllers/RSSController.php
create mode 100644 app/Http/Controllers/SearchController.php
create mode 100644 app/Http/Kernel.php
create mode 100644 app/Http/Middleware/EncryptCookies.php
create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php
create mode 100644 app/Http/Middleware/TrimStrings.php
create mode 100644 app/Http/Middleware/TrustProxies.php
create mode 100644 app/Http/Middleware/VerifyCsrfToken.php
create mode 100644 app/Libraries/TemplateFunction.php
create mode 100644 app/Libraries/Utility.php
create mode 100644 app/Providers/AppServiceProvider.php
create mode 100644 app/Providers/AuthServiceProvider.php
create mode 100644 app/Providers/BroadcastServiceProvider.php
create mode 100644 app/Providers/EventServiceProvider.php
create mode 100644 app/Providers/RouteServiceProvider.php
create mode 100644 app/Shop.php
create mode 100644 app/User.php
create mode 100755 artisan
create mode 100644 bootstrap/app.php
create mode 100644 bootstrap/cache/.gitignore
create mode 100644 composer.json
create mode 100644 composer.lock
create mode 100644 config/app.php
create mode 100644 config/auth.php
create mode 100644 config/broadcasting.php
create mode 100644 config/cache.php
create mode 100644 config/database.php
create mode 100644 config/filesystems.php
create mode 100644 config/hashing.php
create mode 100644 config/logging.php
create mode 100644 config/mail.php
create mode 100644 config/queue.php
create mode 100644 config/services.php
create mode 100644 config/session.php
create mode 100644 config/view.php
create mode 100644 database/.gitignore
create mode 100644 database/factories/UserFactory.php
create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php
create mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php
create mode 100644 database/seeds/DatabaseSeeder.php
create mode 100644 package.json
create mode 100644 phpunit.xml
create mode 100644 public/.htaccess
create mode 100644 public/favicon.ico
create mode 100644 public/font/css/open-iconic-bootstrap.css
create mode 100644 public/font/css/open-iconic-bootstrap.less
create mode 100644 public/font/css/open-iconic-bootstrap.min.css
create mode 100644 public/font/css/open-iconic-bootstrap.scss
create mode 100644 public/font/css/open-iconic-bootstrap.styl
create mode 100644 public/font/css/open-iconic-foundation.css
create mode 100644 public/font/css/open-iconic-foundation.less
create mode 100644 public/font/css/open-iconic-foundation.min.css
create mode 100644 public/font/css/open-iconic-foundation.scss
create mode 100644 public/font/css/open-iconic-foundation.styl
create mode 100644 public/font/css/open-iconic.css
create mode 100644 public/font/css/open-iconic.less
create mode 100644 public/font/css/open-iconic.min.css
create mode 100644 public/font/css/open-iconic.scss
create mode 100644 public/font/css/open-iconic.styl
create mode 100644 public/font/fonts/open-iconic.eot
create mode 100644 public/font/fonts/open-iconic.otf
create mode 100644 public/font/fonts/open-iconic.svg
create mode 100644 public/font/fonts/open-iconic.ttf
create mode 100644 public/font/fonts/open-iconic.woff
create mode 100644 public/img/feed-icon-gray.jpg
create mode 100644 public/img/paw-400-400.png
create mode 100644 public/img/rss-alt.svg
create mode 100644 public/img/rss.svg
create mode 100644 public/index.php
create mode 100644 public/js/app.js
create mode 100644 public/js/bootstrap-material-design.js
create mode 100644 public/js/bootstrap.bundle.js
create mode 100644 public/js/bootstrap.bundle.js.map
create mode 100644 public/js/bootstrap.bundle.min.js
create mode 100644 public/js/bootstrap.bundle.min.js.map
create mode 100644 public/js/bootstrap.js
create mode 100644 public/js/bootstrap.js.map
create mode 100644 public/js/bootstrap.min.js
create mode 100644 public/js/bootstrap.min.js.map
create mode 100644 public/js/jquery-3.2.1.slim.min.js
create mode 100644 public/js/popper.1.12.9.min.js
create mode 100644 public/robots.txt
create mode 100644 public/web.config
create mode 100644 readme.md
create mode 100644 resources/assets/js/app.js
create mode 100644 resources/assets/js/bootstrap.js
create mode 100644 resources/assets/js/components/ExampleComponent.vue
create mode 100644 resources/assets/sass/_variables.scss
create mode 100644 resources/assets/sass/app.scss
create mode 100644 resources/lang/de/pagination.php
create mode 100644 resources/lang/en/auth.php
create mode 100644 resources/lang/en/pagination.php
create mode 100644 resources/lang/en/passwords.php
create mode 100644 resources/lang/en/validation.php
create mode 100644 resources/views/index.blade.php
create mode 100644 resources/views/layouts/base.blade.php
create mode 100644 resources/views/offer.blade.php
create mode 100644 resources/views/paginate.blade.php
create mode 100644 resources/views/search.blade.php
create mode 100644 resources/views/snippets/footer.blade.php
create mode 100644 resources/views/snippets/navbar.blade.php
create mode 100644 resources/views/snippets/sortbuttons.blade.php
create mode 100644 resources/views/vendor/pagination/bootstrap-4.blade.php
create mode 100644 resources/views/vendor/pagination/default.blade.php
create mode 100644 resources/views/vendor/pagination/semantic-ui.blade.php
create mode 100644 resources/views/vendor/pagination/simple-bootstrap-4.blade.php
create mode 100644 resources/views/vendor/pagination/simple-default.blade.php
create mode 100644 routes/api.php
create mode 100644 routes/channels.php
create mode 100644 routes/console.php
create mode 100644 routes/web.php
create mode 100644 server.php
create mode 100755 storage/app/.gitignore
create mode 100755 storage/app/public/.gitignore
create mode 100755 storage/framework/.gitignore
create mode 100755 storage/framework/cache/.gitignore
create mode 100755 storage/framework/sessions/.gitignore
create mode 100755 storage/framework/testing/.gitignore
create mode 100755 storage/framework/views/.gitignore
create mode 100755 storage/logs/.gitignore
create mode 100644 tests/CreatesApplication.php
create mode 100644 tests/Feature/ExampleTest.php
create mode 100644 tests/TestCase.php
create mode 100644 tests/Unit/ExampleTest.php
create mode 100644 webpack.mix.js
diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..ec44a12
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,39 @@
+APP_NAME=Laravel
+APP_ENV=local
+APP_KEY=
+APP_DEBUG=true
+APP_URL=http://localhost
+
+LOG_CHANNEL=stack
+
+DB_CONNECTION=mysql
+DB_HOST=127.0.0.1
+DB_PORT=3306
+DB_DATABASE=homestead
+DB_USERNAME=homestead
+DB_PASSWORD=secret
+
+BROADCAST_DRIVER=log
+CACHE_DRIVER=file
+SESSION_DRIVER=file
+SESSION_LIFETIME=120
+QUEUE_DRIVER=sync
+
+REDIS_HOST=127.0.0.1
+REDIS_PASSWORD=null
+REDIS_PORT=6379
+
+MAIL_DRIVER=smtp
+MAIL_HOST=smtp.mailtrap.io
+MAIL_PORT=2525
+MAIL_USERNAME=null
+MAIL_PASSWORD=null
+MAIL_ENCRYPTION=null
+
+PUSHER_APP_ID=
+PUSHER_APP_KEY=
+PUSHER_APP_SECRET=
+PUSHER_APP_CLUSTER=mt1
+
+MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
+MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..967315d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+* text=auto
+*.css linguist-vendored
+*.scss linguist-vendored
+*.js linguist-vendored
+CHANGELOG.md export-ignore
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..67c0aea
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+/node_modules
+/public/hot
+/public/storage
+/storage/*.key
+/vendor
+/.idea
+/.vscode
+/.vagrant
+Homestead.json
+Homestead.yaml
+npm-debug.log
+yarn-error.log
+.env
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
new file mode 100644
index 0000000..a8c5158
--- /dev/null
+++ b/app/Console/Kernel.php
@@ -0,0 +1,42 @@
+command('inspire')
+ // ->hourly();
+ }
+
+ /**
+ * Register the commands for the application.
+ *
+ * @return void
+ */
+ protected function commands()
+ {
+ $this->load(__DIR__.'/Commands');
+
+ require base_path('routes/console.php');
+ }
+}
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
new file mode 100644
index 0000000..7e2563a
--- /dev/null
+++ b/app/Exceptions/Handler.php
@@ -0,0 +1,53 @@
+middleware('guest');
+ }
+}
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
new file mode 100644
index 0000000..b2ea669
--- /dev/null
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -0,0 +1,39 @@
+middleware('guest')->except('logout');
+ }
+}
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
new file mode 100644
index 0000000..f77265a
--- /dev/null
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -0,0 +1,71 @@
+middleware('guest');
+ }
+
+ /**
+ * Get a validator for an incoming registration request.
+ *
+ * @param array $data
+ * @return \Illuminate\Contracts\Validation\Validator
+ */
+ protected function validator(array $data)
+ {
+ return Validator::make($data, [
+ 'name' => 'required|string|max:255',
+ 'email' => 'required|string|email|max:255|unique:users',
+ 'password' => 'required|string|min:6|confirmed',
+ ]);
+ }
+
+ /**
+ * Create a new user instance after a valid registration.
+ *
+ * @param array $data
+ * @return \App\User
+ */
+ protected function create(array $data)
+ {
+ return User::create([
+ 'name' => $data['name'],
+ 'email' => $data['email'],
+ 'password' => bcrypt($data['password']),
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
new file mode 100644
index 0000000..cf726ee
--- /dev/null
+++ b/app/Http/Controllers/Auth/ResetPasswordController.php
@@ -0,0 +1,39 @@
+middleware('guest');
+ }
+}
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
new file mode 100644
index 0000000..03e02a2
--- /dev/null
+++ b/app/Http/Controllers/Controller.php
@@ -0,0 +1,13 @@
+ 19.98 AND shop != \"Drankdozijn\" ORDER BY procent DESC LIMIT 1)";
+ $query .= "(SELECT name, image_url, spirit_type, spirit_type AS url, spirit_type AS angebotsname, (SELECT MAX(procent) FROM " . $view . "_view) as procent, '' AS linktext FROM ". $view ."_view WHERE original_price > 19.98 ORDER BY procent DESC LIMIT 1)";
+ }
+ $query .= " UNION (SELECT 'Alle Angebote' as name, 'https://angebote.fuselkoenig.de/img/feed-icon-gray.jpg' as image_url, 'RSS-Feeds' as spirit_type, 'feeds' AS url, 'RSS-Feeds' AS angebotsname, (SELECT MAX(procent) FROM all_view) as procent, 'Zu den RSS-Feeds' AS linktext FROM all_view LIMIT 1)";
+
+ $data = DB::select($query);
+
+ $count = DB::select("SELECT count(*) as count FROM all_view")[0];
+ #$data = DB::table('whisky_view')->orderBy('procent', 'DESC')->limit(100)->simplePaginate(20);
+
+ #$views[] = "rss-feeds";
+
+ return view('fk-index', ['data' => $data, 'views' => $views, 'hits' => $count]);
+ }
+}
diff --git a/app/Http/Controllers/LookupController.php b/app/Http/Controllers/LookupController.php
new file mode 100644
index 0000000..3a876a9
--- /dev/null
+++ b/app/Http/Controllers/LookupController.php
@@ -0,0 +1,26 @@
+select('name', 'shop', 'spirit_type')->where('url', "https://l.fuselkoenig.de/" . Input::get('short_url'))->limit(1)->get();
+
+ return response()->json($data);
+ }
+}
diff --git a/app/Http/Controllers/OfferController.php b/app/Http/Controllers/OfferController.php
new file mode 100644
index 0000000..9182206
--- /dev/null
+++ b/app/Http/Controllers/OfferController.php
@@ -0,0 +1,95 @@
+input("order");
+ if ( "asc" != $order_by ) {
+ $order_by = "desc";
+ }
+
+ /*
+ * Database query
+ */
+ $view_name = \Request::route()->getName();
+ #$data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->simplePaginate(10);
+ $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->paginate(10);
+ $count = DB::table($view_name . '_view')->whereNotNull('url')->count();
+
+ $rss_feed = "/angebote/" . $view_name . "/feed/";
+ $query_string = "";
+ $query_params = Input::except('page');
+ foreach( $query_params as $key => $value) {
+ $query_string .= "&" . $key . "=" . $value;
+ }
+ if ( "search" == $view_name && "" != $query_string ) {
+ $query_string = ltrim($query_string, "&");
+ $rss_feed .= "?" . $query_string;
+ }
+
+ if ( "misc" == $view_name ) {
+ $view_name = "Andere Angebote";
+ if ( $data->count() ) {
+ $title = "andere Angebote";
+ } else {
+ $title = "anderen Angebote";
+ }
+ } else if ( "all" == $view_name ) {
+ $view_name = "Alle Angebote";
+ if ( $data->count() ) {
+ $title = "alle Angebote";
+ } else {
+ $title = "Angebote";
+ }
+ } else {
+ $title = ucfirst($view_name) . "-Angebote";
+ }
+
+ return view('fk-offer', ['data' => $data, 'count' => $count, 'spirit_type' => $view_name, 'rss_feed' => $rss_feed, 'title' => $title ]);
+ }
+}
diff --git a/app/Http/Controllers/RSSController.php b/app/Http/Controllers/RSSController.php
new file mode 100644
index 0000000..5c30bd9
--- /dev/null
+++ b/app/Http/Controllers/RSSController.php
@@ -0,0 +1,132 @@
+input("order");
+ if ( "asc" != $order_by ) {
+ $order_by = "desc";
+ }
+
+ /*
+ * Database query
+ */
+ $view_name = str_replace("_feed", "", \Request::route()->getName());
+ $view_name = str_replace("/angebote/", "", $view_name);
+
+ if ( "search" == $view_name ) {
+ $query = Input::get("q");
+ $q = "%" . Utility::escapeLike($query) . "%";
+ $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orderBy($sort_by, $order_by)->limit(20)->get();
+ } else {
+ $data = DB::table($view_name . '_view')->orderBy($sort_by, $order_by)->limit(20)->get();
+ }
+
+ /*
+ * For strftime().
+ */
+ setlocale(LC_TIME, 'de_DE.utf8');
+
+ /*
+ if ( "" != env('PIWIK_RSS_ID') ) {
+ $piwik = new \PiwikTracker( env('PIWIK_RSS_ID'), env('PIWIK_RSS_URL') );
+ $piwik->setTokenAuth( env('PIWIK_RSS_AUTH_TOKEN') );
+ $piwik->setVisitorId( $piwik->getVisitorId() );
+ $piwik->setIp( $request->header('X_REAL_IP') );
+ $piwik->setUrl( $request->fullUrl() );
+
+ $piwik->setUrlReferrer( $request->server('HTTP_REFERER') );
+ $piwik->setBrowserLanguage( $request->server('HTTP_ACCEPT_LANGUAGE') );
+ $piwik->setUserAgent( $request->server('HTTP_USER_AGENT') );
+
+ $piwik->doTrackPageView( ucfirst($view_name) . "-Feed" );
+
+ if ( "" != Input::get('sort') ) {
+ $piwik->doTrackEvent("sort", Input::get('sort') );
+ }
+ if ( "" != Input::get('order') ) {
+ $piwik->doTrackEvent("order", Input::get('order') );
+ }
+ if ( "" != Input::get('q') ) {
+ $piwik->doTrackEvent("search_phrase", Input::get('q') );
+ }
+ }
+ */
+
+
+
+ $feed = \App::make("feed");
+
+ $feed->title = "Sonderangebote";
+ $feed->description = 'Finde immer die günstigsten Angebote im Bereich Spirituosen. Regelmäßig neue Schnäppchen.';
+ $feed->logo = url('https://angebote.fuselkoenig.de/img/paw-400-400.png');
+ $feed->link = url( $request->fullUrl() );
+ $feed->setDateFormat('timestamp'); // 'datetime', 'timestamp' or 'carbon'
+ $feed->pubdate = $data[0]->created_at;
+ $feed->lang = 'de';
+ $feed->setShortening(true); // true or false
+ $feed->setTextLimit(5000); // maximum length of description text
+
+ foreach ( $data as $offer ) {
+
+ # Adds campagin
+ $offer->url = $offer->url . "?pk_campaign=feed&pk_kwd=" . urlencode($offer->name) . "&pk_source=" . $view_name . "_feed";
+
+ if ( "" != env('PIWIK_RSS_ID') ) {
+ // $piwik->doTrackContentImpression($offer->spirit_type, $offer->name, $offer->long_url);
+ }
+
+ $desc = '
'.$offer->spirit_type.' '. $offer->name . ' gesenkt auf ' . \TF::fF($offer->discounted_price) . '€ statt ' . \TF::fF($offer->original_price) . '€ ('.$offer->procent.'% Rabatt auf '. $offer->shop .').';
+ $feed->add($offer->name, $offer->shop, $offer->url, $offer->created_at, $desc, $desc);
+ }
+
+ return $feed->render('atom');
+
+ }
+}
diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php
new file mode 100644
index 0000000..5092f30
--- /dev/null
+++ b/app/Http/Controllers/SearchController.php
@@ -0,0 +1,80 @@
+input("order");
+ if ( "desc" != $order_by ) {
+ if ( "created_at" == $sort_by &&"asc" != $order_by ) {
+ $order_by = "desc";
+ } else {
+ $order_by = "asc";
+ }
+ }
+
+ $query = Input::get("q");
+ $q = "%" . Utility::escapeLike($query) . "%";
+ $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->orderBy($sort_by, $order_by)->paginate(20);
+ $count = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q);
+
+ $query_string = "";
+ $query_params = Input::except('page');
+ foreach( $query_params as $key => $value) {
+ $query_string .= "&" . $key . "=" . $value;
+ }
+ $query_string = ltrim($query_string, "&");
+
+ /*
+ * For strftime() in view.
+ */
+ #setlocale(LC_TIME, 'de_DE.utf8');
+
+ return view('fk-search', ['data' => $data, 'count' => $count, 'search_phrase' => $query, 'rss_feed' => '/angebote/search/feed/?' . $query_string ]);
+ }
+}
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
new file mode 100644
index 0000000..74b1cbd
--- /dev/null
+++ b/app/Http/Kernel.php
@@ -0,0 +1,62 @@
+ [
+ \App\Http\Middleware\EncryptCookies::class,
+ \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
+ \Illuminate\Session\Middleware\StartSession::class,
+ // \Illuminate\Session\Middleware\AuthenticateSession::class,
+ \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+ \App\Http\Middleware\VerifyCsrfToken::class,
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ ],
+
+ 'api' => [
+ 'throttle:60,1',
+ 'bindings',
+ ],
+ ];
+
+ /**
+ * The application's route middleware.
+ *
+ * These middleware may be assigned to groups or used individually.
+ *
+ * @var array
+ */
+ protected $routeMiddleware = [
+ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
+ 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
+ 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
+ 'can' => \Illuminate\Auth\Middleware\Authorize::class,
+ 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+ 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ ];
+}
diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php
new file mode 100644
index 0000000..033136a
--- /dev/null
+++ b/app/Http/Middleware/EncryptCookies.php
@@ -0,0 +1,17 @@
+check()) {
+ return redirect('/home');
+ }
+
+ return $next($request);
+ }
+}
diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php
new file mode 100644
index 0000000..5a50e7b
--- /dev/null
+++ b/app/Http/Middleware/TrimStrings.php
@@ -0,0 +1,18 @@
+ 'App\Policies\ModelPolicy',
+ ];
+
+ /**
+ * Register any authentication / authorization services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ $this->registerPolicies();
+
+ //
+ }
+}
diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php
new file mode 100644
index 0000000..352cce4
--- /dev/null
+++ b/app/Providers/BroadcastServiceProvider.php
@@ -0,0 +1,21 @@
+ [
+ 'App\Listeners\EventListener',
+ ],
+ ];
+
+ /**
+ * Register any events for your application.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ parent::boot();
+
+ //
+ }
+}
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
new file mode 100644
index 0000000..5ea48d3
--- /dev/null
+++ b/app/Providers/RouteServiceProvider.php
@@ -0,0 +1,73 @@
+mapApiRoutes();
+
+ $this->mapWebRoutes();
+
+ //
+ }
+
+ /**
+ * Define the "web" routes for the application.
+ *
+ * These routes all receive session state, CSRF protection, etc.
+ *
+ * @return void
+ */
+ protected function mapWebRoutes()
+ {
+ Route::middleware('web')
+ ->namespace($this->namespace)
+ ->group(base_path('routes/web.php'));
+ }
+
+ /**
+ * Define the "api" routes for the application.
+ *
+ * These routes are typically stateless.
+ *
+ * @return void
+ */
+ protected function mapApiRoutes()
+ {
+ Route::prefix('api')
+ ->middleware('api')
+ ->namespace($this->namespace)
+ ->group(base_path('routes/api.php'));
+ }
+}
diff --git a/app/Shop.php b/app/Shop.php
new file mode 100644
index 0000000..1e57060
--- /dev/null
+++ b/app/Shop.php
@@ -0,0 +1,10 @@
+make(Illuminate\Contracts\Console\Kernel::class);
+
+$status = $kernel->handle(
+ $input = new Symfony\Component\Console\Input\ArgvInput,
+ new Symfony\Component\Console\Output\ConsoleOutput
+);
+
+/*
+|--------------------------------------------------------------------------
+| Shutdown The Application
+|--------------------------------------------------------------------------
+|
+| Once Artisan has finished running, we will fire off the shutdown events
+| so that any final work may be done by the application before we shut
+| down the process. This is the last thing to happen to the request.
+|
+*/
+
+$kernel->terminate($input, $status);
+
+exit($status);
diff --git a/bootstrap/app.php b/bootstrap/app.php
new file mode 100644
index 0000000..f2801ad
--- /dev/null
+++ b/bootstrap/app.php
@@ -0,0 +1,55 @@
+singleton(
+ Illuminate\Contracts\Http\Kernel::class,
+ App\Http\Kernel::class
+);
+
+$app->singleton(
+ Illuminate\Contracts\Console\Kernel::class,
+ App\Console\Kernel::class
+);
+
+$app->singleton(
+ Illuminate\Contracts\Debug\ExceptionHandler::class,
+ App\Exceptions\Handler::class
+);
+
+/*
+|--------------------------------------------------------------------------
+| Return The Application
+|--------------------------------------------------------------------------
+|
+| This script returns the application instance. The instance is given to
+| the calling script so we can separate the building of the instances
+| from the actual running of the application and sending responses.
+|
+*/
+
+return $app;
diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/bootstrap/cache/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..44e1e2c
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,62 @@
+{
+ "name": "laravel/laravel",
+ "description": "The Laravel Framework.",
+ "keywords": ["framework", "laravel"],
+ "license": "MIT",
+ "type": "project",
+ "require": {
+ "php": ">=7.1.3",
+ "fideloper/proxy": "~4.0",
+ "laravel/framework": "5.6.*",
+ "laravel/tinker": "~1.0",
+ "piwik/piwik-php-tracker": "^1.4",
+ "roumen/feed": "^2.12"
+ },
+ "require-dev": {
+ "filp/whoops": "~2.0",
+ "nunomaduro/collision": "~1.1",
+ "fzaninotto/faker": "~1.4",
+ "mockery/mockery": "~1.0",
+ "phpunit/phpunit": "~7.0",
+ "symfony/thanks": "^1.0"
+ },
+ "autoload": {
+ "classmap": [
+ "database/seeds",
+ "database/factories"
+ ],
+ "psr-4": {
+ "App\\": "app/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\": "tests/"
+ }
+ },
+ "extra": {
+ "laravel": {
+ "dont-discover": [
+ ]
+ }
+ },
+ "scripts": {
+ "post-root-package-install": [
+ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
+ ],
+ "post-create-project-cmd": [
+ "@php artisan key:generate"
+ ],
+ "post-autoload-dump": [
+ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
+ "@php artisan package:discover"
+ ]
+ },
+ "config": {
+ "preferred-install": "dist",
+ "sort-packages": true,
+ "optimize-autoloader": true
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..f1064d7
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,4118 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "9e4429f37916161d55b6c32191b012fc",
+ "packages": [
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
+ "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "@stable"
+ },
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "time": "2014-10-24T07:27:01+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2018-01-09T20:05:19+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ],
+ "time": "2014-09-09T13:34:57+00:00"
+ },
+ {
+ "name": "dragonmantank/cron-expression",
+ "version": "v2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dragonmantank/cron-expression.git",
+ "reference": "8a84aee649c3a3ba03a721c1fb080e08dfbcd68b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8a84aee649c3a3ba03a721c1fb080e08dfbcd68b",
+ "reference": "8a84aee649c3a3ba03a721c1fb080e08dfbcd68b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cron\\": "src/Cron/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Chris Tankersley",
+ "email": "chris@ctankersley.com",
+ "homepage": "https://github.com/dragonmantank"
+ }
+ ],
+ "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
+ "keywords": [
+ "cron",
+ "schedule"
+ ],
+ "time": "2017-10-12T15:59:13+00:00"
+ },
+ {
+ "name": "egulias/email-validator",
+ "version": "2.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/egulias/EmailValidator.git",
+ "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/1bec00a10039b823cc94eef4eddd47dcd3b2ca04",
+ "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "^1.0.1",
+ "php": ">= 5.5"
+ },
+ "require-dev": {
+ "dominicsayers/isemail": "dev-master",
+ "phpunit/phpunit": "^4.8.35",
+ "satooshi/php-coveralls": "^1.0.1"
+ },
+ "suggest": {
+ "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Egulias\\EmailValidator\\": "EmailValidator"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eduardo Gulias Davis"
+ }
+ ],
+ "description": "A library for validating emails against several RFCs",
+ "homepage": "https://github.com/egulias/EmailValidator",
+ "keywords": [
+ "email",
+ "emailvalidation",
+ "emailvalidator",
+ "validation",
+ "validator"
+ ],
+ "time": "2017-11-15T23:40:40+00:00"
+ },
+ {
+ "name": "erusev/parsedown",
+ "version": "1.6.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/erusev/parsedown.git",
+ "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548",
+ "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Parsedown": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "Parser for Markdown.",
+ "homepage": "http://parsedown.org",
+ "keywords": [
+ "markdown",
+ "parser"
+ ],
+ "time": "2017-11-14T20:44:03+00:00"
+ },
+ {
+ "name": "fideloper/proxy",
+ "version": "dev-develop",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fideloper/TrustedProxy.git",
+ "reference": "9618897f49ccf8ddfad10f6bdf610be8e0e6298b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9618897f49ccf8ddfad10f6bdf610be8e0e6298b",
+ "reference": "9618897f49ccf8ddfad10f6bdf610be8e0e6298b",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "~5.0",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "illuminate/http": "~5.6",
+ "mockery/mockery": "~1.0",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-develop": "4.0-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Fideloper\\Proxy\\TrustedProxyServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fideloper\\Proxy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Fidao",
+ "email": "fideloper@gmail.com"
+ }
+ ],
+ "description": "Set trusted proxies for Laravel",
+ "keywords": [
+ "load balancing",
+ "proxy",
+ "trusted proxy"
+ ],
+ "time": "2018-01-18T13:27:29+00:00"
+ },
+ {
+ "name": "jakub-onderka/php-console-color",
+ "version": "0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
+ "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1",
+ "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "jakub-onderka/php-code-style": "1.0",
+ "jakub-onderka/php-parallel-lint": "0.*",
+ "jakub-onderka/php-var-dump-check": "0.*",
+ "phpunit/phpunit": "3.7.*",
+ "squizlabs/php_codesniffer": "1.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JakubOnderka\\PhpConsoleColor": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Onderka",
+ "email": "jakub.onderka@gmail.com",
+ "homepage": "http://www.acci.cz"
+ }
+ ],
+ "time": "2014-04-08T15:00:19+00:00"
+ },
+ {
+ "name": "jakub-onderka/php-console-highlighter",
+ "version": "v0.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
+ "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5",
+ "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5",
+ "shasum": ""
+ },
+ "require": {
+ "jakub-onderka/php-console-color": "~0.1",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "jakub-onderka/php-code-style": "~1.0",
+ "jakub-onderka/php-parallel-lint": "~0.5",
+ "jakub-onderka/php-var-dump-check": "~0.1",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~1.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JakubOnderka\\PhpConsoleHighlighter": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Onderka",
+ "email": "acci@acci.cz",
+ "homepage": "http://www.acci.cz/"
+ }
+ ],
+ "time": "2015-04-20T18:58:01+00:00"
+ },
+ {
+ "name": "laravel/framework",
+ "version": "v5.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "56a58e0fa3d845bb992d7c64ac9bb6d0c24b745a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/56a58e0fa3d845bb992d7c64ac9bb6d0c24b745a",
+ "reference": "56a58e0fa3d845bb992d7c64ac9bb6d0c24b745a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "~1.1",
+ "dragonmantank/cron-expression": "~2.0",
+ "erusev/parsedown": "~1.6",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "league/flysystem": "~1.0",
+ "monolog/monolog": "~1.12",
+ "nesbot/carbon": "~1.20",
+ "php": "^7.1.3",
+ "psr/container": "~1.0",
+ "psr/simple-cache": "^1.0",
+ "ramsey/uuid": "^3.7",
+ "swiftmailer/swiftmailer": "~6.0",
+ "symfony/console": "~4.0",
+ "symfony/debug": "~4.0",
+ "symfony/finder": "~4.0",
+ "symfony/http-foundation": "~4.0",
+ "symfony/http-kernel": "~4.0",
+ "symfony/process": "~4.0",
+ "symfony/routing": "~4.0",
+ "symfony/var-dumper": "~4.0",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.1",
+ "vlucas/phpdotenv": "~2.2"
+ },
+ "replace": {
+ "illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
+ "illuminate/bus": "self.version",
+ "illuminate/cache": "self.version",
+ "illuminate/config": "self.version",
+ "illuminate/console": "self.version",
+ "illuminate/container": "self.version",
+ "illuminate/contracts": "self.version",
+ "illuminate/cookie": "self.version",
+ "illuminate/database": "self.version",
+ "illuminate/encryption": "self.version",
+ "illuminate/events": "self.version",
+ "illuminate/filesystem": "self.version",
+ "illuminate/hashing": "self.version",
+ "illuminate/http": "self.version",
+ "illuminate/log": "self.version",
+ "illuminate/mail": "self.version",
+ "illuminate/notifications": "self.version",
+ "illuminate/pagination": "self.version",
+ "illuminate/pipeline": "self.version",
+ "illuminate/queue": "self.version",
+ "illuminate/redis": "self.version",
+ "illuminate/routing": "self.version",
+ "illuminate/session": "self.version",
+ "illuminate/support": "self.version",
+ "illuminate/translation": "self.version",
+ "illuminate/validation": "self.version",
+ "illuminate/view": "self.version",
+ "tightenco/collect": "self.version"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~3.0",
+ "doctrine/dbal": "~2.6",
+ "filp/whoops": "^2.1.4",
+ "mockery/mockery": "~1.0",
+ "moontoast/math": "^1.1",
+ "orchestra/testbench-core": "3.6.*",
+ "pda/pheanstalk": "~3.0",
+ "phpunit/phpunit": "~7.0",
+ "predis/predis": "^1.1.1",
+ "symfony/css-selector": "~4.0",
+ "symfony/dom-crawler": "~4.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).",
+ "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).",
+ "ext-pcntl": "Required to use all features of the queue worker.",
+ "ext-posix": "Required to use all features of the queue worker.",
+ "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).",
+ "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).",
+ "laravel/tinker": "Required to use the tinker console command (~1.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
+ "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).",
+ "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).",
+ "nexmo/client": "Required to use the Nexmo transport (~1.0).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
+ "predis/predis": "Required to use the redis cache and queue drivers (~1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).",
+ "symfony/css-selector": "Required to use some of the crawler integration testing tools (~4.0).",
+ "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~4.0).",
+ "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.6-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Support/helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\": "src/Illuminate/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Laravel Framework.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "framework",
+ "laravel"
+ ],
+ "time": "2018-02-07T15:36:40+00:00"
+ },
+ {
+ "name": "laravel/tinker",
+ "version": "v1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/tinker.git",
+ "reference": "852c2abe0b0991555a403f1c0583e64de6acb4a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/852c2abe0b0991555a403f1c0583e64de6acb4a6",
+ "reference": "852c2abe0b0991555a403f1c0583e64de6acb4a6",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/console": "~5.1",
+ "illuminate/contracts": "~5.1",
+ "illuminate/support": "~5.1",
+ "php": ">=5.5.9",
+ "psy/psysh": "0.7.*|0.8.*",
+ "symfony/var-dumper": "~3.0|~4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0|~5.0"
+ },
+ "suggest": {
+ "illuminate/database": "The Illuminate Database package (~5.1)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Laravel\\Tinker\\TinkerServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Tinker\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Powerful REPL for the Laravel framework.",
+ "keywords": [
+ "REPL",
+ "Tinker",
+ "laravel",
+ "psysh"
+ ],
+ "time": "2017-12-18T16:25:11+00:00"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "1.0.42",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "09eabc54e199950041aef258a85847676496fe8e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/09eabc54e199950041aef258a85847676496fe8e",
+ "reference": "09eabc54e199950041aef258a85847676496fe8e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "conflict": {
+ "league/flysystem-sftp": "<1.0.6"
+ },
+ "require-dev": {
+ "ext-fileinfo": "*",
+ "phpspec/phpspec": "^3.4",
+ "phpunit/phpunit": "^5.7"
+ },
+ "suggest": {
+ "ext-fileinfo": "Required for MimeType",
+ "ext-ftp": "Allows you to use FTP server storage",
+ "ext-openssl": "Allows you to use FTPS server storage",
+ "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
+ "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
+ "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
+ "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
+ "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
+ "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
+ "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
+ "league/flysystem-webdav": "Allows you to use WebDAV storage",
+ "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
+ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
+ "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frenky.net"
+ }
+ ],
+ "description": "Filesystem abstraction: Many filesystems, one API.",
+ "keywords": [
+ "Cloud Files",
+ "WebDAV",
+ "abstraction",
+ "aws",
+ "cloud",
+ "copy.com",
+ "dropbox",
+ "file systems",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "rackspace",
+ "remote",
+ "s3",
+ "sftp",
+ "storage"
+ ],
+ "time": "2018-01-27T16:03:56+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2017-06-19T01:22:40+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "1.22.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
+ "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "symfony/translation": "~2.6 || ~3.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2",
+ "phpunit/phpunit": "~4.0 || ~5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.23-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "http://nesbot.com"
+ }
+ ],
+ "description": "A simple API extension for DateTime.",
+ "homepage": "http://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "time": "2017-01-16T07:55:07+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v3.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "e57b3a09784f846411aa7ed664eedb73e3399078"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e57b3a09784f846411aa7ed664eedb73e3399078",
+ "reference": "e57b3a09784f846411aa7ed664eedb73e3399078",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0|~5.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2018-01-25T21:31:33+00:00"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v2.0.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8",
+ "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/random.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "pseudorandom",
+ "random"
+ ],
+ "time": "2017-09-27T21:40:39+00:00"
+ },
+ {
+ "name": "piwik/piwik-php-tracker",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/piwik/piwik-php-tracker.git",
+ "reference": "f9a0168c87f01f2d5de95029a1ba0d1fd6c3d5ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/piwik/piwik-php-tracker/zipball/f9a0168c87f01f2d5de95029a1ba0d1fd6c3d5ab",
+ "reference": "f9a0168c87f01f2d5de95029a1ba0d1fd6c3d5ab",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "."
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "The Piwik Team",
+ "email": "hello@piwik.org",
+ "homepage": "http://piwik.org/the-piwik-team/"
+ }
+ ],
+ "description": "PHP Client for Piwik Analytics Tracking API",
+ "homepage": "http://piwik.org",
+ "keywords": [
+ "analytics",
+ "piwik",
+ "tracker"
+ ],
+ "time": "2017-11-09T03:20:23+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-10-10T12:19:37+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24",
+ "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "time": "2017-01-02T13:31:39+00:00"
+ },
+ {
+ "name": "psy/psysh",
+ "version": "v0.8.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bobthecow/psysh.git",
+ "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5069b70e8c4ea492c2b5939b6eddc78bfe41cfec",
+ "reference": "5069b70e8c4ea492c2b5939b6eddc78bfe41cfec",
+ "shasum": ""
+ },
+ "require": {
+ "dnoegel/php-xdg-base-dir": "0.1",
+ "jakub-onderka/php-console-highlighter": "0.3.*",
+ "nikic/php-parser": "~1.3|~2.0|~3.0",
+ "php": ">=5.3.9",
+ "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
+ "symfony/var-dumper": "~2.7|~3.0|~4.0"
+ },
+ "require-dev": {
+ "hoa/console": "~3.16|~1.14",
+ "phpunit/phpunit": "^4.8.35|^5.4.3",
+ "symfony/finder": "~2.1|~3.0|~4.0"
+ },
+ "suggest": {
+ "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
+ "ext-pdo-sqlite": "The doc command requires SQLite to work.",
+ "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
+ "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.",
+ "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit."
+ },
+ "bin": [
+ "bin/psysh"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-develop": "0.8.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Psy/functions.php"
+ ],
+ "psr-4": {
+ "Psy\\": "src/Psy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Justin Hileman",
+ "email": "justin@justinhileman.info",
+ "homepage": "http://justinhileman.com"
+ }
+ ],
+ "description": "An interactive shell for modern PHP.",
+ "homepage": "http://psysh.org",
+ "keywords": [
+ "REPL",
+ "console",
+ "interactive",
+ "shell"
+ ],
+ "time": "2017-12-28T16:14:16+00:00"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "3.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76",
+ "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "^1.0|^2.0",
+ "php": "^5.4 || ^7.0"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "codeception/aspect-mock": "^1.0 | ~2.0.0",
+ "doctrine/annotations": "~1.2.0",
+ "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1",
+ "ircmaxell/random-lib": "^1.1",
+ "jakub-onderka/php-parallel-lint": "^0.9.0",
+ "mockery/mockery": "^0.9.9",
+ "moontoast/math": "^1.1",
+ "php-mock/php-mock-phpunit": "^0.3|^1.1",
+ "phpunit/phpunit": "^4.7|^5.0",
+ "squizlabs/php_codesniffer": "^2.3"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
+ "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
+ "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
+ "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marijn Huizendveld",
+ "email": "marijn.huizendveld@gmail.com"
+ },
+ {
+ "name": "Thibaud Fabre",
+ "email": "thibaud@aztech.io"
+ },
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
+ "homepage": "https://github.com/ramsey/uuid",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "time": "2018-01-20T00:28:24+00:00"
+ },
+ {
+ "name": "roumen/feed",
+ "version": "v2.12.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Laravelium/laravel-feed.git",
+ "reference": "1fd410a282b489c94ebc6b993f161a9447fda172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Laravelium/laravel-feed/zipball/1fd410a282b489c94ebc6b993f161a9447fda172",
+ "reference": "1fd410a282b489c94ebc6b993f161a9447fda172",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/support": "5.6.*",
+ "php": ">=7.1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Roumen\\Feed\\FeedServiceProvider"
+ ],
+ "aliases": {
+ "Feed": "Roumen\\Feed\\Feed"
+ }
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Roumen\\Feed": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roumen Damianoff",
+ "email": "roumen@damianoff.com",
+ "homepage": "https://damianoff.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "A simple feed generator for Laravel.",
+ "homepage": "https://laravelium.com",
+ "keywords": [
+ "atom",
+ "feed",
+ "generator",
+ "laravel",
+ "rss"
+ ],
+ "time": "2018-02-07T20:50:19+00:00"
+ },
+ {
+ "name": "swiftmailer/swiftmailer",
+ "version": "v6.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/412333372fb6c8ffb65496a2bbd7321af75733fc",
+ "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc",
+ "shasum": ""
+ },
+ "require": {
+ "egulias/email-validator": "~2.0",
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9.1",
+ "symfony/phpunit-bridge": "~3.3@dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.0-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "http://swiftmailer.symfony.com",
+ "keywords": [
+ "email",
+ "mail",
+ "mailer"
+ ],
+ "time": "2017-09-30T22:39:41+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/36d5b41e7d4e1ccf0370f6babe966c08ef0a1488",
+ "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~3.4|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-29T09:06:29+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/f97600434e3141ef3cbb9ea42cf500fba88022b7",
+ "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony CssSelector Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T07:38:00+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "c77bb31d0f6310a2ac11e657475d396a92e5dc54"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/c77bb31d0f6310a2ac11e657475d396a92e5dc54",
+ "reference": "c77bb31d0f6310a2ac11e657475d396a92e5dc54",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": "<3.4"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~3.4|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-18T22:19:33+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb",
+ "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/expression-language": "~3.4|~4.0",
+ "symfony/stopwatch": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T07:38:00+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601",
+ "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-03T07:38:00+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "82a3ee2c6662d08ca1adf99e1ef2e31ab48196d4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/82a3ee2c6662d08ca1adf99e1ef2e31ab48196d4",
+ "reference": "82a3ee2c6662d08ca1adf99e1ef2e31ab48196d4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.1"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~3.4|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpFoundation Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-29T09:06:29+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "194bd224ec27952eac6d4fea6264b22990834eca"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/194bd224ec27952eac6d4fea6264b22990834eca",
+ "reference": "194bd224ec27952eac6d4fea6264b22990834eca",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0",
+ "symfony/debug": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~3.4|~4.0",
+ "symfony/http-foundation": "~3.4.4|~4.0.4"
+ },
+ "conflict": {
+ "symfony/config": "<3.4",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/var-dumper": "<3.4",
+ "twig/twig": "<1.34|<2.4,>=2"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/cache": "~1.0",
+ "symfony/browser-kit": "~3.4|~4.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/css-selector": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/dom-crawler": "~3.4|~4.0",
+ "symfony/expression-language": "~3.4|~4.0",
+ "symfony/finder": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0",
+ "symfony/routing": "~3.4|~4.0",
+ "symfony/stopwatch": "~3.4|~4.0",
+ "symfony/templating": "~3.4|~4.0",
+ "symfony/translation": "~3.4|~4.0",
+ "symfony/var-dumper": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": "",
+ "symfony/var-dumper": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpKernel Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-29T13:27:08+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
+ "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2018-01-30T19:27:44+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "8eca20c8a369e069d4f4c2ac9895144112867422"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8eca20c8a369e069d4f4c2ac9895144112867422",
+ "reference": "8eca20c8a369e069d4f4c2ac9895144112867422",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2018-01-31T17:43:24+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "e1712002d81de6f39f854bc5bbd9e9f4bb6345b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/e1712002d81de6f39f854bc5bbd9e9f4bb6345b4",
+ "reference": "e1712002d81de6f39f854bc5bbd9e9f4bb6345b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-29T09:06:29+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "a69bd948700b672e036147762f46749bcae33796"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/a69bd948700b672e036147762f46749bcae33796",
+ "reference": "a69bd948700b672e036147762f46749bcae33796",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "conflict": {
+ "symfony/config": "<3.4",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/common": "~2.2",
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/expression-language": "~3.4|~4.0",
+ "symfony/http-foundation": "~3.4|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation loader",
+ "symfony/config": "For using the all-in-one router or any loader",
+ "symfony/dependency-injection": "For loading routes from a service",
+ "symfony/expression-language": "For using expression matching",
+ "symfony/http-foundation": "For using a Symfony Request object",
+ "symfony/yaml": "For using the YAML loader"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Routing\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Routing Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "router",
+ "routing",
+ "uri",
+ "url"
+ ],
+ "time": "2018-01-16T18:04:12+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v3.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/10b32cf0eae28b9b39fe26c456c42b19854c4b84",
+ "reference": "10b32cf0eae28b9b39fe26c456c42b19854c4b84",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/config": "<2.8",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.8|~3.0|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/intl": "^2.8.18|^3.2.5|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "psr/log": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-01-18T22:16:57+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "6d63cc74f3e2d4961411ccb77389a00332653104"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6d63cc74f3e2d4961411ccb77389a00332653104",
+ "reference": "6d63cc74f3e2d4961411ccb77389a00332653104",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php72": "~1.5"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "time": "2018-01-29T09:06:29+00:00"
+ },
+ {
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "version": "2.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
+ "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
+ "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TijsVerkoyen\\CssToInlineStyles\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Tijs Verkoyen",
+ "email": "css_to_inline_styles@verkoyen.eu",
+ "role": "Developer"
+ }
+ ],
+ "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
+ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
+ "time": "2017-11-27T11:13:29+00:00"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
+ "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause-Attribution"
+ ],
+ "authors": [
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "http://www.vancelucas.com"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "time": "2016-09-01T10:05:43+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "^6.2.3",
+ "squizlabs/php_codesniffer": "^3.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2017-07-22T11:58:36+00:00"
+ },
+ {
+ "name": "filp/whoops",
+ "version": "2.1.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filp/whoops.git",
+ "reference": "c6081b8838686aa04f1e83ba7e91f78b7b2a23e6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/c6081b8838686aa04f1e83ba7e91f78b7b2a23e6",
+ "reference": "c6081b8838686aa04f1e83ba7e91f78b7b2a23e6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9 || ^7.0",
+ "psr/log": "^1.0.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "0.9.*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7",
+ "symfony/var-dumper": "^2.6 || ^3.0"
+ },
+ "suggest": {
+ "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
+ "whoops/soap": "Formats errors as SOAP responses"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Whoops\\": "src/Whoops/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Filipe Dobreira",
+ "homepage": "https://github.com/filp",
+ "role": "Developer"
+ }
+ ],
+ "description": "php error handling for cool kids",
+ "homepage": "https://filp.github.io/whoops/",
+ "keywords": [
+ "error",
+ "exception",
+ "handling",
+ "library",
+ "throwable",
+ "whoops"
+ ],
+ "time": "2017-11-23T18:22:44+00:00"
+ },
+ {
+ "name": "fzaninotto/faker",
+ "version": "v1.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fzaninotto/Faker.git",
+ "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d3ed4cc37051c1ca52d22d76b437d14809fc7e0d",
+ "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "ext-intl": "*",
+ "phpunit/phpunit": "^4.0 || ^5.0",
+ "squizlabs/php_codesniffer": "^1.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Faker\\": "src/Faker/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "François Zaninotto"
+ }
+ ],
+ "description": "Faker is a PHP library that generates fake data for you.",
+ "keywords": [
+ "data",
+ "faker",
+ "fixtures"
+ ],
+ "time": "2017-08-15T16:48:10+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3|^7.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "1.3.3",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "hamcrest"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD"
+ ],
+ "description": "This is the PHP port of Hamcrest Matchers",
+ "keywords": [
+ "test"
+ ],
+ "time": "2016-01-20T08:20:44+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/1bac8c362b12f522fdd1f1fa3556284c91affa38",
+ "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "~2.0",
+ "lib-pcre": ">=7.0",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.7|~6.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mockery": "library/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "http://blog.astrumfutura.com"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
+ "homepage": "http://github.com/mockery/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "time": "2017-10-06T16:20:43+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^4.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2017-10-19T19:58:43+00:00"
+ },
+ {
+ "name": "nunomaduro/collision",
+ "version": "v1.1.22",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nunomaduro/collision.git",
+ "reference": "236609bd5a067587f600bc55c5d683b840798b22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/236609bd5a067587f600bc55c5d683b840798b22",
+ "reference": "236609bd5a067587f600bc55c5d683b840798b22",
+ "shasum": ""
+ },
+ "require": {
+ "filp/whoops": "^2.1.4",
+ "php": "^7.1",
+ "symfony/console": "~2.8|~3.3|~4.0"
+ },
+ "require-dev": {
+ "laravel/framework": "5.5.*",
+ "phpunit/phpunit": "~6.5"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "NunoMaduro\\Collision\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Cli error handling for console/command-line PHP applications.",
+ "keywords": [
+ "artisan",
+ "cli",
+ "command-line",
+ "console",
+ "error",
+ "handling",
+ "laravel",
+ "laravel-zero",
+ "php",
+ "symfony"
+ ],
+ "time": "2018-02-07T10:42:20+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^1.0.1",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2017-03-05T18:14:27+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2017-03-05T17:38:23+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2017-11-30T07:14:17+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2017-11-24T13:59:53+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "6.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "f8ca4b604baf23dab89d87773c28cc07405189ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f8ca4b604baf23dab89d87773c28cc07405189ba",
+ "reference": "f8ca4b604baf23dab89d87773c28cc07405189ba",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.1",
+ "phpunit/php-file-iterator": "^1.4.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^3.0",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-02-02T07:01:41+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2017-11-27T13:52:08+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f",
+ "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2018-02-01T13:07:23+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace",
+ "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2018-02-01T13:16:43+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "7.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "9b3373439fdf2f3e9d1578f5e408a3a0d161c3bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b3373439fdf2f3e9d1578f5e408a3a0d161c3bc",
+ "reference": "9b3373439fdf2f3e9d1578f5e408a3a0d161c3bc",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.6.1",
+ "phar-io/manifest": "^1.0.1",
+ "phar-io/version": "^1.0",
+ "php": "^7.1",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^6.0",
+ "phpunit/php-file-iterator": "^1.4.3",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^2.0",
+ "phpunit/phpunit-mock-objects": "^6.0",
+ "sebastian/comparator": "^2.1",
+ "sebastian/diff": "^3.0",
+ "sebastian/environment": "^3.1",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^1.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^2.0"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-02-02T05:04:08+00:00"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "6.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "e495e5d3660321b62c294d8c0e954d02d6ce2573"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/e495e5d3660321b62c294d8c0e954d02d6ce2573",
+ "reference": "e495e5d3660321b62c294d8c0e954d02d6ce2573",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.5",
+ "php": "^7.1",
+ "phpunit/php-text-template": "^1.2.1",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2018-02-01T13:11:13+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "2.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/diff": "^2.0 || ^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2018-02-01T13:46:46+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "e09160918c66281713f1c324c1f4c4c3037ba1e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/e09160918c66281713f1c324c1f4c4c3037ba1e8",
+ "reference": "e09160918c66281713f1c324c1f4c4c3037ba1e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0",
+ "symfony/process": "^2 || ^3.3 || ^4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "time": "2018-02-01T13:45:15+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2017-07-01T08:51:00+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2017-04-03T13:19:02+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2017-04-27T15:39:26+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2015-07-28T20:34:47+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "symfony/thanks",
+ "version": "v1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/thanks.git",
+ "reference": "c757ee0c9dcfcc0e9e30fbbbdcadeb9dcc9aaaf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/thanks/zipball/c757ee0c9dcfcc0e9e30fbbbdcadeb9dcc9aaaf4",
+ "reference": "c757ee0c9dcfcc0e9e30fbbbdcadeb9dcc9aaaf4",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0",
+ "php": "^5.5.9|^7.0.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ },
+ "class": "Symfony\\Thanks\\Thanks"
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Thanks\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ }
+ ],
+ "description": "Give thanks (in the form of a GitHub ⭐) to your fellow PHP package maintainers (not limited to Symfony components)!",
+ "time": "2018-01-26T10:44:34+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "time": "2017-04-07T12:08:54+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2018-01-29T19:49:41+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": [],
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.1.3"
+ },
+ "platform-dev": []
+}
diff --git a/config/app.php b/config/app.php
new file mode 100644
index 0000000..9e6c86c
--- /dev/null
+++ b/config/app.php
@@ -0,0 +1,217 @@
+ env('APP_NAME', 'Laravel'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Environment
+ |--------------------------------------------------------------------------
+ |
+ | This value determines the "environment" your application is currently
+ | running in. This may determine how you prefer to configure various
+ | services your application utilizes. Set this in your ".env" file.
+ |
+ */
+
+ 'env' => env('APP_ENV', 'production'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Debug Mode
+ |--------------------------------------------------------------------------
+ |
+ | When your application is in debug mode, detailed error messages with
+ | stack traces will be shown on every error that occurs within your
+ | application. If disabled, a simple generic error page is shown.
+ |
+ */
+
+ 'debug' => env('APP_DEBUG', false),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application URL
+ |--------------------------------------------------------------------------
+ |
+ | This URL is used by the console to properly generate URLs when using
+ | the Artisan command line tool. You should set this to the root of
+ | your application so that it is used when running Artisan tasks.
+ |
+ */
+
+ 'url' => env('APP_URL', 'http://localhost'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Timezone
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the default timezone for your application, which
+ | will be used by the PHP date and date-time functions. We have gone
+ | ahead and set this to a sensible default for you out of the box.
+ |
+ */
+
+ 'timezone' => 'Europe/Berlin',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Locale Configuration
+ |--------------------------------------------------------------------------
+ |
+ | The application locale determines the default locale that will be used
+ | by the translation service provider. You are free to set this value
+ | to any of the locales which will be supported by the application.
+ |
+ */
+
+ 'locale' => 'de',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Application Fallback Locale
+ |--------------------------------------------------------------------------
+ |
+ | The fallback locale determines the locale to use when the current one
+ | is not available. You may change the value to correspond to any of
+ | the language folders that are provided through your application.
+ |
+ */
+
+ 'fallback_locale' => 'en',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Encryption Key
+ |--------------------------------------------------------------------------
+ |
+ | This key is used by the Illuminate encrypter service and should be set
+ | to a random, 32 character string, otherwise these encrypted strings
+ | will not be safe. Please do this before deploying an application!
+ |
+ */
+
+ 'key' => env('APP_KEY'),
+
+ 'cipher' => 'AES-256-CBC',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Autoloaded Service Providers
+ |--------------------------------------------------------------------------
+ |
+ | The service providers listed here will be automatically loaded on the
+ | request to your application. Feel free to add your own services to
+ | this array to grant expanded functionality to your applications.
+ |
+ */
+
+ 'providers' => [
+
+ /*
+ * Laravel Framework Service Providers...
+ */
+ Illuminate\Auth\AuthServiceProvider::class,
+ Illuminate\Broadcasting\BroadcastServiceProvider::class,
+ Illuminate\Bus\BusServiceProvider::class,
+ Illuminate\Cache\CacheServiceProvider::class,
+ Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
+ Illuminate\Cookie\CookieServiceProvider::class,
+ Illuminate\Database\DatabaseServiceProvider::class,
+ Illuminate\Encryption\EncryptionServiceProvider::class,
+ Illuminate\Filesystem\FilesystemServiceProvider::class,
+ Illuminate\Foundation\Providers\FoundationServiceProvider::class,
+ Illuminate\Hashing\HashServiceProvider::class,
+ Illuminate\Mail\MailServiceProvider::class,
+ Illuminate\Notifications\NotificationServiceProvider::class,
+ Illuminate\Pagination\PaginationServiceProvider::class,
+ Illuminate\Pipeline\PipelineServiceProvider::class,
+ Illuminate\Queue\QueueServiceProvider::class,
+ Illuminate\Redis\RedisServiceProvider::class,
+ Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
+ Illuminate\Session\SessionServiceProvider::class,
+ Illuminate\Translation\TranslationServiceProvider::class,
+ Illuminate\Validation\ValidationServiceProvider::class,
+ Illuminate\View\ViewServiceProvider::class,
+
+ /*
+ * Package Service Providers...
+ */
+
+ /*
+ * Application Service Providers...
+ */
+ App\Providers\AppServiceProvider::class,
+ App\Providers\AuthServiceProvider::class,
+ // App\Providers\BroadcastServiceProvider::class,
+ App\Providers\EventServiceProvider::class,
+ App\Providers\RouteServiceProvider::class,
+
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Class Aliases
+ |--------------------------------------------------------------------------
+ |
+ | This array of class aliases will be registered when this application
+ | is started. However, feel free to register as many as you wish as
+ | the aliases are "lazy" loaded so they don't hinder performance.
+ |
+ */
+
+ 'aliases' => [
+
+ 'App' => Illuminate\Support\Facades\App::class,
+ 'Artisan' => Illuminate\Support\Facades\Artisan::class,
+ 'Auth' => Illuminate\Support\Facades\Auth::class,
+ 'Blade' => Illuminate\Support\Facades\Blade::class,
+ 'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
+ 'Bus' => Illuminate\Support\Facades\Bus::class,
+ 'Cache' => Illuminate\Support\Facades\Cache::class,
+ 'Config' => Illuminate\Support\Facades\Config::class,
+ 'Cookie' => Illuminate\Support\Facades\Cookie::class,
+ 'Crypt' => Illuminate\Support\Facades\Crypt::class,
+ 'DB' => Illuminate\Support\Facades\DB::class,
+ 'Eloquent' => Illuminate\Database\Eloquent\Model::class,
+ 'Event' => Illuminate\Support\Facades\Event::class,
+ 'File' => Illuminate\Support\Facades\File::class,
+ 'Gate' => Illuminate\Support\Facades\Gate::class,
+ 'Hash' => Illuminate\Support\Facades\Hash::class,
+ 'Lang' => Illuminate\Support\Facades\Lang::class,
+ 'Log' => Illuminate\Support\Facades\Log::class,
+ 'Mail' => Illuminate\Support\Facades\Mail::class,
+ 'Notification' => Illuminate\Support\Facades\Notification::class,
+ 'Password' => Illuminate\Support\Facades\Password::class,
+ 'Queue' => Illuminate\Support\Facades\Queue::class,
+ 'Redirect' => Illuminate\Support\Facades\Redirect::class,
+ 'Redis' => Illuminate\Support\Facades\Redis::class,
+ 'Request' => Illuminate\Support\Facades\Request::class,
+ 'Response' => Illuminate\Support\Facades\Response::class,
+ 'Route' => Illuminate\Support\Facades\Route::class,
+ 'Schema' => Illuminate\Support\Facades\Schema::class,
+ 'Session' => Illuminate\Support\Facades\Session::class,
+ 'Storage' => Illuminate\Support\Facades\Storage::class,
+ 'URL' => Illuminate\Support\Facades\URL::class,
+ 'Validator' => Illuminate\Support\Facades\Validator::class,
+ 'View' => Illuminate\Support\Facades\View::class,
+
+ 'TF' => App\Libraries\TemplateFunction::class,
+ 'Input' => Illuminate\Support\Facades\Input::class,
+
+ ],
+
+];
diff --git a/config/auth.php b/config/auth.php
new file mode 100644
index 0000000..7817501
--- /dev/null
+++ b/config/auth.php
@@ -0,0 +1,102 @@
+ [
+ 'guard' => 'web',
+ 'passwords' => 'users',
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Authentication Guards
+ |--------------------------------------------------------------------------
+ |
+ | Next, you may define every authentication guard for your application.
+ | Of course, a great default configuration has been defined for you
+ | here which uses session storage and the Eloquent user provider.
+ |
+ | All authentication drivers have a user provider. This defines how the
+ | users are actually retrieved out of your database or other storage
+ | mechanisms used by this application to persist your user's data.
+ |
+ | Supported: "session", "token"
+ |
+ */
+
+ 'guards' => [
+ 'web' => [
+ 'driver' => 'session',
+ 'provider' => 'users',
+ ],
+
+ 'api' => [
+ 'driver' => 'token',
+ 'provider' => 'users',
+ ],
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | User Providers
+ |--------------------------------------------------------------------------
+ |
+ | All authentication drivers have a user provider. This defines how the
+ | users are actually retrieved out of your database or other storage
+ | mechanisms used by this application to persist your user's data.
+ |
+ | If you have multiple user tables or models you may configure multiple
+ | sources which represent each model / table. These sources may then
+ | be assigned to any extra authentication guards you have defined.
+ |
+ | Supported: "database", "eloquent"
+ |
+ */
+
+ 'providers' => [
+ 'users' => [
+ 'driver' => 'eloquent',
+ 'model' => App\User::class,
+ ],
+
+ // 'users' => [
+ // 'driver' => 'database',
+ // 'table' => 'users',
+ // ],
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Resetting Passwords
+ |--------------------------------------------------------------------------
+ |
+ | You may specify multiple password reset configurations if you have more
+ | than one user table or model in the application and you want to have
+ | separate password reset settings based on the specific user types.
+ |
+ | The expire time is the number of minutes that the reset token should be
+ | considered valid. This security feature keeps tokens short-lived so
+ | they have less time to be guessed. You may change this as needed.
+ |
+ */
+
+ 'passwords' => [
+ 'users' => [
+ 'provider' => 'users',
+ 'table' => 'password_resets',
+ 'expire' => 60,
+ ],
+ ],
+
+];
diff --git a/config/broadcasting.php b/config/broadcasting.php
new file mode 100644
index 0000000..3ca45ea
--- /dev/null
+++ b/config/broadcasting.php
@@ -0,0 +1,59 @@
+ env('BROADCAST_DRIVER', 'null'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Broadcast Connections
+ |--------------------------------------------------------------------------
+ |
+ | Here you may define all of the broadcast connections that will be used
+ | to broadcast events to other systems or over websockets. Samples of
+ | each available type of connection are provided inside this array.
+ |
+ */
+
+ 'connections' => [
+
+ 'pusher' => [
+ 'driver' => 'pusher',
+ 'key' => env('PUSHER_APP_KEY'),
+ 'secret' => env('PUSHER_APP_SECRET'),
+ 'app_id' => env('PUSHER_APP_ID'),
+ 'options' => [
+ 'cluster' => env('PUSHER_APP_CLUSTER'),
+ 'encrypted' => true,
+ ],
+ ],
+
+ 'redis' => [
+ 'driver' => 'redis',
+ 'connection' => 'default',
+ ],
+
+ 'log' => [
+ 'driver' => 'log',
+ ],
+
+ 'null' => [
+ 'driver' => 'null',
+ ],
+
+ ],
+
+];
diff --git a/config/cache.php b/config/cache.php
new file mode 100644
index 0000000..fa12e5e
--- /dev/null
+++ b/config/cache.php
@@ -0,0 +1,94 @@
+ env('CACHE_DRIVER', 'file'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Cache Stores
+ |--------------------------------------------------------------------------
+ |
+ | Here you may define all of the cache "stores" for your application as
+ | well as their drivers. You may even define multiple stores for the
+ | same cache driver to group types of items stored in your caches.
+ |
+ */
+
+ 'stores' => [
+
+ 'apc' => [
+ 'driver' => 'apc',
+ ],
+
+ 'array' => [
+ 'driver' => 'array',
+ ],
+
+ 'database' => [
+ 'driver' => 'database',
+ 'table' => 'cache',
+ 'connection' => null,
+ ],
+
+ 'file' => [
+ 'driver' => 'file',
+ 'path' => storage_path('framework/cache/data'),
+ ],
+
+ 'memcached' => [
+ 'driver' => 'memcached',
+ 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
+ 'sasl' => [
+ env('MEMCACHED_USERNAME'),
+ env('MEMCACHED_PASSWORD'),
+ ],
+ 'options' => [
+ // Memcached::OPT_CONNECT_TIMEOUT => 2000,
+ ],
+ 'servers' => [
+ [
+ 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
+ 'port' => env('MEMCACHED_PORT', 11211),
+ 'weight' => 100,
+ ],
+ ],
+ ],
+
+ 'redis' => [
+ 'driver' => 'redis',
+ 'connection' => 'default',
+ ],
+
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Cache Key Prefix
+ |--------------------------------------------------------------------------
+ |
+ | When utilizing a RAM based store such as APC or Memcached, there might
+ | be other applications utilizing the same cache. So, we'll specify a
+ | value to get prefixed to all our keys so we can avoid collisions.
+ |
+ */
+
+ 'prefix' => env(
+ 'CACHE_PREFIX',
+ str_slug(env('APP_NAME', 'laravel'), '_').'_cache'
+ ),
+
+];
diff --git a/config/database.php b/config/database.php
new file mode 100644
index 0000000..cab5d06
--- /dev/null
+++ b/config/database.php
@@ -0,0 +1,120 @@
+ env('DB_CONNECTION', 'mysql'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Database Connections
+ |--------------------------------------------------------------------------
+ |
+ | Here are each of the database connections setup for your application.
+ | Of course, examples of configuring each database platform that is
+ | supported by Laravel is shown below to make development simple.
+ |
+ |
+ | All database work in Laravel is done through the PHP PDO facilities
+ | so make sure you have the driver for your particular database of
+ | choice installed on your machine before you begin development.
+ |
+ */
+
+ 'connections' => [
+
+ 'sqlite' => [
+ 'driver' => 'sqlite',
+ 'database' => env('DB_DATABASE', database_path('database.sqlite')),
+ 'prefix' => '',
+ ],
+
+ 'mysql' => [
+ 'driver' => 'mysql',
+ 'host' => env('DB_HOST', '127.0.0.1'),
+ 'port' => env('DB_PORT', '3306'),
+ 'database' => env('DB_DATABASE', 'forge'),
+ 'username' => env('DB_USERNAME', 'forge'),
+ 'password' => env('DB_PASSWORD', ''),
+ 'unix_socket' => env('DB_SOCKET', ''),
+ 'charset' => 'utf8mb4',
+ 'collation' => 'utf8mb4_unicode_ci',
+ 'prefix' => '',
+ 'strict' => true,
+ 'engine' => null,
+ ],
+
+ 'pgsql' => [
+ 'driver' => 'pgsql',
+ 'host' => env('DB_HOST', '127.0.0.1'),
+ 'port' => env('DB_PORT', '5432'),
+ 'database' => env('DB_DATABASE', 'forge'),
+ 'username' => env('DB_USERNAME', 'forge'),
+ 'password' => env('DB_PASSWORD', ''),
+ 'charset' => 'utf8',
+ 'prefix' => '',
+ 'schema' => 'public',
+ 'sslmode' => 'prefer',
+ ],
+
+ 'sqlsrv' => [
+ 'driver' => 'sqlsrv',
+ 'host' => env('DB_HOST', 'localhost'),
+ 'port' => env('DB_PORT', '1433'),
+ 'database' => env('DB_DATABASE', 'forge'),
+ 'username' => env('DB_USERNAME', 'forge'),
+ 'password' => env('DB_PASSWORD', ''),
+ 'charset' => 'utf8',
+ 'prefix' => '',
+ ],
+
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Migration Repository Table
+ |--------------------------------------------------------------------------
+ |
+ | This table keeps track of all the migrations that have already run for
+ | your application. Using this information, we can determine which of
+ | the migrations on disk haven't actually been run in the database.
+ |
+ */
+
+ 'migrations' => 'migrations',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Redis Databases
+ |--------------------------------------------------------------------------
+ |
+ | Redis is an open source, fast, and advanced key-value store that also
+ | provides a richer set of commands than a typical key-value systems
+ | such as APC or Memcached. Laravel makes it easy to dig right in.
+ |
+ */
+
+ 'redis' => [
+
+ 'client' => 'predis',
+
+ 'default' => [
+ 'host' => env('REDIS_HOST', '127.0.0.1'),
+ 'password' => env('REDIS_PASSWORD', null),
+ 'port' => env('REDIS_PORT', 6379),
+ 'database' => 0,
+ ],
+
+ ],
+
+];
diff --git a/config/filesystems.php b/config/filesystems.php
new file mode 100644
index 0000000..67158a5
--- /dev/null
+++ b/config/filesystems.php
@@ -0,0 +1,69 @@
+ env('FILESYSTEM_DRIVER', 'local'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Default Cloud Filesystem Disk
+ |--------------------------------------------------------------------------
+ |
+ | Many applications store files both locally and in the cloud. For this
+ | reason, you may specify a default "cloud" driver here. This driver
+ | will be bound as the Cloud disk implementation in the container.
+ |
+ */
+
+ 'cloud' => env('FILESYSTEM_CLOUD', 's3'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Filesystem Disks
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure as many filesystem "disks" as you wish, and you
+ | may even configure multiple disks of the same driver. Defaults have
+ | been setup for each driver as an example of the required options.
+ |
+ | Supported Drivers: "local", "ftp", "s3", "rackspace"
+ |
+ */
+
+ 'disks' => [
+
+ 'local' => [
+ 'driver' => 'local',
+ 'root' => storage_path('app'),
+ ],
+
+ 'public' => [
+ 'driver' => 'local',
+ 'root' => storage_path('app/public'),
+ 'url' => env('APP_URL').'/storage',
+ 'visibility' => 'public',
+ ],
+
+ 's3' => [
+ 'driver' => 's3',
+ 'key' => env('AWS_ACCESS_KEY_ID'),
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
+ 'region' => env('AWS_DEFAULT_REGION'),
+ 'bucket' => env('AWS_BUCKET'),
+ 'url' => env('AWS_URL'),
+ ],
+
+ ],
+
+];
diff --git a/config/hashing.php b/config/hashing.php
new file mode 100644
index 0000000..f929cf0
--- /dev/null
+++ b/config/hashing.php
@@ -0,0 +1,20 @@
+ 'bcrypt',
+
+];
diff --git a/config/logging.php b/config/logging.php
new file mode 100644
index 0000000..902efaf
--- /dev/null
+++ b/config/logging.php
@@ -0,0 +1,70 @@
+ env('LOG_CHANNEL', 'stack'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Log Channels
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the log channels for your application. Out of
+ | the box, Laravel uses the Monolog PHP logging library. This gives
+ | you a variety of powerful log handlers / formatters to utilize.
+ |
+ | Available Drivers: "single", "daily", "slack", "syslog",
+ | "errorlog", "custom", "stack"
+ |
+ */
+
+ 'channels' => [
+ 'stack' => [
+ 'driver' => 'stack',
+ 'channels' => ['single'],
+ ],
+
+ 'single' => [
+ 'driver' => 'single',
+ 'path' => storage_path('logs/laravel.log'),
+ 'level' => 'debug',
+ ],
+
+ 'daily' => [
+ 'driver' => 'daily',
+ 'path' => storage_path('logs/laravel.log'),
+ 'level' => 'debug',
+ 'days' => 7,
+ ],
+
+ 'slack' => [
+ 'driver' => 'slack',
+ 'url' => env('LOG_SLACK_WEBHOOK_URL'),
+ 'username' => 'Laravel Log',
+ 'emoji' => ':boom:',
+ 'level' => 'critical',
+ ],
+
+ 'syslog' => [
+ 'driver' => 'syslog',
+ 'level' => 'debug',
+ ],
+
+ 'errorlog' => [
+ 'driver' => 'errorlog',
+ 'level' => 'debug',
+ ],
+ ],
+
+];
diff --git a/config/mail.php b/config/mail.php
new file mode 100644
index 0000000..bb92224
--- /dev/null
+++ b/config/mail.php
@@ -0,0 +1,123 @@
+ env('MAIL_DRIVER', 'smtp'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | SMTP Host Address
+ |--------------------------------------------------------------------------
+ |
+ | Here you may provide the host address of the SMTP server used by your
+ | applications. A default option is provided that is compatible with
+ | the Mailgun mail service which will provide reliable deliveries.
+ |
+ */
+
+ 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | SMTP Host Port
+ |--------------------------------------------------------------------------
+ |
+ | This is the SMTP port used by your application to deliver e-mails to
+ | users of the application. Like the host we have set this value to
+ | stay compatible with the Mailgun e-mail application by default.
+ |
+ */
+
+ 'port' => env('MAIL_PORT', 587),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Global "From" Address
+ |--------------------------------------------------------------------------
+ |
+ | You may wish for all e-mails sent by your application to be sent from
+ | the same address. Here, you may specify a name and address that is
+ | used globally for all e-mails that are sent by your application.
+ |
+ */
+
+ 'from' => [
+ 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
+ 'name' => env('MAIL_FROM_NAME', 'Example'),
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | E-Mail Encryption Protocol
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the encryption protocol that should be used when
+ | the application send e-mail messages. A sensible default using the
+ | transport layer security protocol should provide great security.
+ |
+ */
+
+ 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | SMTP Server Username
+ |--------------------------------------------------------------------------
+ |
+ | If your SMTP server requires a username for authentication, you should
+ | set it here. This will get used to authenticate with your server on
+ | connection. You may also set the "password" value below this one.
+ |
+ */
+
+ 'username' => env('MAIL_USERNAME'),
+
+ 'password' => env('MAIL_PASSWORD'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Sendmail System Path
+ |--------------------------------------------------------------------------
+ |
+ | When using the "sendmail" driver to send e-mails, we will need to know
+ | the path to where Sendmail lives on this server. A default path has
+ | been provided here, which will work well on most of your systems.
+ |
+ */
+
+ 'sendmail' => '/usr/sbin/sendmail -bs',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Markdown Mail Settings
+ |--------------------------------------------------------------------------
+ |
+ | If you are using Markdown based email rendering, you may configure your
+ | theme and component paths here, allowing you to customize the design
+ | of the emails. Or, you may simply stick with the Laravel defaults!
+ |
+ */
+
+ 'markdown' => [
+ 'theme' => 'default',
+
+ 'paths' => [
+ resource_path('views/vendor/mail'),
+ ],
+ ],
+
+];
diff --git a/config/queue.php b/config/queue.php
new file mode 100644
index 0000000..87b1b1b
--- /dev/null
+++ b/config/queue.php
@@ -0,0 +1,86 @@
+ env('QUEUE_DRIVER', 'sync'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Queue Connections
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the connection information for each server that
+ | is used by your application. A default configuration has been added
+ | for each back-end shipped with Laravel. You are free to add more.
+ |
+ */
+
+ 'connections' => [
+
+ 'sync' => [
+ 'driver' => 'sync',
+ ],
+
+ 'database' => [
+ 'driver' => 'database',
+ 'table' => 'jobs',
+ 'queue' => 'default',
+ 'retry_after' => 90,
+ ],
+
+ 'beanstalkd' => [
+ 'driver' => 'beanstalkd',
+ 'host' => 'localhost',
+ 'queue' => 'default',
+ 'retry_after' => 90,
+ ],
+
+ 'sqs' => [
+ 'driver' => 'sqs',
+ 'key' => env('SQS_KEY', 'your-public-key'),
+ 'secret' => env('SQS_SECRET', 'your-secret-key'),
+ 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
+ 'queue' => env('SQS_QUEUE', 'your-queue-name'),
+ 'region' => env('SQS_REGION', 'us-east-1'),
+ ],
+
+ 'redis' => [
+ 'driver' => 'redis',
+ 'connection' => 'default',
+ 'queue' => 'default',
+ 'retry_after' => 90,
+ 'block_for' => null,
+ ],
+
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Failed Queue Jobs
+ |--------------------------------------------------------------------------
+ |
+ | These options configure the behavior of failed queue job logging so you
+ | can control which database and table are used to store the jobs that
+ | have failed. You may change them to any database / table you wish.
+ |
+ */
+
+ 'failed' => [
+ 'database' => env('DB_CONNECTION', 'mysql'),
+ 'table' => 'failed_jobs',
+ ],
+
+];
diff --git a/config/services.php b/config/services.php
new file mode 100644
index 0000000..4460f0e
--- /dev/null
+++ b/config/services.php
@@ -0,0 +1,38 @@
+ [
+ 'domain' => env('MAILGUN_DOMAIN'),
+ 'secret' => env('MAILGUN_SECRET'),
+ ],
+
+ 'ses' => [
+ 'key' => env('SES_KEY'),
+ 'secret' => env('SES_SECRET'),
+ 'region' => 'us-east-1',
+ ],
+
+ 'sparkpost' => [
+ 'secret' => env('SPARKPOST_SECRET'),
+ ],
+
+ 'stripe' => [
+ 'model' => App\User::class,
+ 'key' => env('STRIPE_KEY'),
+ 'secret' => env('STRIPE_SECRET'),
+ ],
+
+];
diff --git a/config/session.php b/config/session.php
new file mode 100644
index 0000000..736fb3c
--- /dev/null
+++ b/config/session.php
@@ -0,0 +1,197 @@
+ env('SESSION_DRIVER', 'file'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Lifetime
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the number of minutes that you wish the session
+ | to be allowed to remain idle before it expires. If you want them
+ | to immediately expire on the browser closing, set that option.
+ |
+ */
+
+ 'lifetime' => env('SESSION_LIFETIME', 120),
+
+ 'expire_on_close' => false,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Encryption
+ |--------------------------------------------------------------------------
+ |
+ | This option allows you to easily specify that all of your session data
+ | should be encrypted before it is stored. All encryption will be run
+ | automatically by Laravel and you can use the Session like normal.
+ |
+ */
+
+ 'encrypt' => false,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session File Location
+ |--------------------------------------------------------------------------
+ |
+ | When using the native session driver, we need a location where session
+ | files may be stored. A default has been set for you but a different
+ | location may be specified. This is only needed for file sessions.
+ |
+ */
+
+ 'files' => storage_path('framework/sessions'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Database Connection
+ |--------------------------------------------------------------------------
+ |
+ | When using the "database" or "redis" session drivers, you may specify a
+ | connection that should be used to manage these sessions. This should
+ | correspond to a connection in your database configuration options.
+ |
+ */
+
+ 'connection' => null,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Database Table
+ |--------------------------------------------------------------------------
+ |
+ | When using the "database" session driver, you may specify the table we
+ | should use to manage the sessions. Of course, a sensible default is
+ | provided for you; however, you are free to change this as needed.
+ |
+ */
+
+ 'table' => 'sessions',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Cache Store
+ |--------------------------------------------------------------------------
+ |
+ | When using the "apc" or "memcached" session drivers, you may specify a
+ | cache store that should be used for these sessions. This value must
+ | correspond with one of the application's configured cache stores.
+ |
+ */
+
+ 'store' => null,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Sweeping Lottery
+ |--------------------------------------------------------------------------
+ |
+ | Some session drivers must manually sweep their storage location to get
+ | rid of old sessions from storage. Here are the chances that it will
+ | happen on a given request. By default, the odds are 2 out of 100.
+ |
+ */
+
+ 'lottery' => [2, 100],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Cookie Name
+ |--------------------------------------------------------------------------
+ |
+ | Here you may change the name of the cookie used to identify a session
+ | instance by ID. The name specified here will get used every time a
+ | new session cookie is created by the framework for every driver.
+ |
+ */
+
+ 'cookie' => env(
+ 'SESSION_COOKIE',
+ str_slug(env('APP_NAME', 'laravel'), '_').'_session'
+ ),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Cookie Path
+ |--------------------------------------------------------------------------
+ |
+ | The session cookie path determines the path for which the cookie will
+ | be regarded as available. Typically, this will be the root path of
+ | your application but you are free to change this when necessary.
+ |
+ */
+
+ 'path' => '/',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Session Cookie Domain
+ |--------------------------------------------------------------------------
+ |
+ | Here you may change the domain of the cookie used to identify a session
+ | in your application. This will determine which domains the cookie is
+ | available to in your application. A sensible default has been set.
+ |
+ */
+
+ 'domain' => env('SESSION_DOMAIN', null),
+
+ /*
+ |--------------------------------------------------------------------------
+ | HTTPS Only Cookies
+ |--------------------------------------------------------------------------
+ |
+ | By setting this option to true, session cookies will only be sent back
+ | to the server if the browser has a HTTPS connection. This will keep
+ | the cookie from being sent to you if it can not be done securely.
+ |
+ */
+
+ 'secure' => env('SESSION_SECURE_COOKIE', false),
+
+ /*
+ |--------------------------------------------------------------------------
+ | HTTP Access Only
+ |--------------------------------------------------------------------------
+ |
+ | Setting this value to true will prevent JavaScript from accessing the
+ | value of the cookie and the cookie will only be accessible through
+ | the HTTP protocol. You are free to modify this option if needed.
+ |
+ */
+
+ 'http_only' => true,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Same-Site Cookies
+ |--------------------------------------------------------------------------
+ |
+ | This option determines how your cookies behave when cross-site requests
+ | take place, and can be used to mitigate CSRF attacks. By default, we
+ | do not enable this as other CSRF protection services are in place.
+ |
+ | Supported: "lax", "strict"
+ |
+ */
+
+ 'same_site' => null,
+
+];
diff --git a/config/view.php b/config/view.php
new file mode 100644
index 0000000..2acfd9c
--- /dev/null
+++ b/config/view.php
@@ -0,0 +1,33 @@
+ [
+ resource_path('views'),
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Compiled View Path
+ |--------------------------------------------------------------------------
+ |
+ | This option determines where all the compiled Blade templates will be
+ | stored for your application. Typically, this is within the storage
+ | directory. However, as usual, you are free to change this value.
+ |
+ */
+
+ 'compiled' => realpath(storage_path('framework/views')),
+
+];
diff --git a/database/.gitignore b/database/.gitignore
new file mode 100644
index 0000000..9b1dffd
--- /dev/null
+++ b/database/.gitignore
@@ -0,0 +1 @@
+*.sqlite
diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php
new file mode 100644
index 0000000..facf233
--- /dev/null
+++ b/database/factories/UserFactory.php
@@ -0,0 +1,23 @@
+define(App\User::class, function (Faker $faker) {
+ return [
+ 'name' => $faker->name,
+ 'email' => $faker->unique()->safeEmail,
+ 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
+ 'remember_token' => str_random(10),
+ ];
+});
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
new file mode 100644
index 0000000..689cbee
--- /dev/null
+++ b/database/migrations/2014_10_12_000000_create_users_table.php
@@ -0,0 +1,35 @@
+increments('id');
+ $table->string('name');
+ $table->string('email')->unique();
+ $table->string('password');
+ $table->rememberToken();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('users');
+ }
+}
diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php
new file mode 100644
index 0000000..0d5cb84
--- /dev/null
+++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php
@@ -0,0 +1,32 @@
+string('email')->index();
+ $table->string('token');
+ $table->timestamp('created_at')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('password_resets');
+ }
+}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
new file mode 100644
index 0000000..e119db6
--- /dev/null
+++ b/database/seeds/DatabaseSeeder.php
@@ -0,0 +1,16 @@
+call(UsersTableSeeder::class);
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..ecf0bcc
--- /dev/null
+++ b/package.json
@@ -0,0 +1,22 @@
+{
+ "private": true,
+ "scripts": {
+ "dev": "npm run development",
+ "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
+ "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
+ "watch-poll": "npm run watch -- --watch-poll",
+ "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
+ "prod": "npm run production",
+ "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
+ },
+ "devDependencies": {
+ "axios": "^0.17",
+ "bootstrap": "^4.0.0",
+ "popper.js": "^1.12",
+ "cross-env": "^5.1",
+ "jquery": "^3.2",
+ "laravel-mix": "^2.0",
+ "lodash": "^4.17.4",
+ "vue": "^2.5.7"
+ }
+}
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000..bb9c4a7
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ ./tests/Feature
+
+
+
+ ./tests/Unit
+
+
+
+
+ ./app
+
+
+
+
+
+
+
+
+
diff --git a/public/.htaccess b/public/.htaccess
new file mode 100644
index 0000000..b75525b
--- /dev/null
+++ b/public/.htaccess
@@ -0,0 +1,21 @@
+
+
+ Options -MultiViews -Indexes
+
+
+ RewriteEngine On
+
+ # Handle Authorization Header
+ RewriteCond %{HTTP:Authorization} .
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+
+ # Redirect Trailing Slashes If Not A Folder...
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_URI} (.+)/$
+ RewriteRule ^ %1 [L,R=301]
+
+ # Handle Front Controller...
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^ index.php [L]
+
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..41f6475
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/font/css/open-iconic-bootstrap.css b/public/font/css/open-iconic-bootstrap.css
new file mode 100644
index 0000000..56c4e5f
--- /dev/null
+++ b/public/font/css/open-iconic-bootstrap.css
@@ -0,0 +1,952 @@
+/* Bootstrap */
+
+@font-face {
+ font-family: 'Icons';
+ src: url('../fonts/open-iconic.eot');
+ src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.oi {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ speak:none;
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.oi:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+}
+
+.oi.oi-align-center:before {
+ text-align: center;
+}
+
+.oi.oi-align-left:before {
+ text-align: left;
+}
+
+.oi.oi-align-right:before {
+ text-align: right;
+}
+
+
+.oi.oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+
+.oi.oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+}
+
+.oi.oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+}
+
+
+.oi-account-login:before {
+ content:'\e000';
+}
+
+.oi-account-logout:before {
+ content:'\e001';
+}
+
+.oi-action-redo:before {
+ content:'\e002';
+}
+
+.oi-action-undo:before {
+ content:'\e003';
+}
+
+.oi-align-center:before {
+ content:'\e004';
+}
+
+.oi-align-left:before {
+ content:'\e005';
+}
+
+.oi-align-right:before {
+ content:'\e006';
+}
+
+.oi-aperture:before {
+ content:'\e007';
+}
+
+.oi-arrow-bottom:before {
+ content:'\e008';
+}
+
+.oi-arrow-circle-bottom:before {
+ content:'\e009';
+}
+
+.oi-arrow-circle-left:before {
+ content:'\e00a';
+}
+
+.oi-arrow-circle-right:before {
+ content:'\e00b';
+}
+
+.oi-arrow-circle-top:before {
+ content:'\e00c';
+}
+
+.oi-arrow-left:before {
+ content:'\e00d';
+}
+
+.oi-arrow-right:before {
+ content:'\e00e';
+}
+
+.oi-arrow-thick-bottom:before {
+ content:'\e00f';
+}
+
+.oi-arrow-thick-left:before {
+ content:'\e010';
+}
+
+.oi-arrow-thick-right:before {
+ content:'\e011';
+}
+
+.oi-arrow-thick-top:before {
+ content:'\e012';
+}
+
+.oi-arrow-top:before {
+ content:'\e013';
+}
+
+.oi-audio-spectrum:before {
+ content:'\e014';
+}
+
+.oi-audio:before {
+ content:'\e015';
+}
+
+.oi-badge:before {
+ content:'\e016';
+}
+
+.oi-ban:before {
+ content:'\e017';
+}
+
+.oi-bar-chart:before {
+ content:'\e018';
+}
+
+.oi-basket:before {
+ content:'\e019';
+}
+
+.oi-battery-empty:before {
+ content:'\e01a';
+}
+
+.oi-battery-full:before {
+ content:'\e01b';
+}
+
+.oi-beaker:before {
+ content:'\e01c';
+}
+
+.oi-bell:before {
+ content:'\e01d';
+}
+
+.oi-bluetooth:before {
+ content:'\e01e';
+}
+
+.oi-bold:before {
+ content:'\e01f';
+}
+
+.oi-bolt:before {
+ content:'\e020';
+}
+
+.oi-book:before {
+ content:'\e021';
+}
+
+.oi-bookmark:before {
+ content:'\e022';
+}
+
+.oi-box:before {
+ content:'\e023';
+}
+
+.oi-briefcase:before {
+ content:'\e024';
+}
+
+.oi-british-pound:before {
+ content:'\e025';
+}
+
+.oi-browser:before {
+ content:'\e026';
+}
+
+.oi-brush:before {
+ content:'\e027';
+}
+
+.oi-bug:before {
+ content:'\e028';
+}
+
+.oi-bullhorn:before {
+ content:'\e029';
+}
+
+.oi-calculator:before {
+ content:'\e02a';
+}
+
+.oi-calendar:before {
+ content:'\e02b';
+}
+
+.oi-camera-slr:before {
+ content:'\e02c';
+}
+
+.oi-caret-bottom:before {
+ content:'\e02d';
+}
+
+.oi-caret-left:before {
+ content:'\e02e';
+}
+
+.oi-caret-right:before {
+ content:'\e02f';
+}
+
+.oi-caret-top:before {
+ content:'\e030';
+}
+
+.oi-cart:before {
+ content:'\e031';
+}
+
+.oi-chat:before {
+ content:'\e032';
+}
+
+.oi-check:before {
+ content:'\e033';
+}
+
+.oi-chevron-bottom:before {
+ content:'\e034';
+}
+
+.oi-chevron-left:before {
+ content:'\e035';
+}
+
+.oi-chevron-right:before {
+ content:'\e036';
+}
+
+.oi-chevron-top:before {
+ content:'\e037';
+}
+
+.oi-circle-check:before {
+ content:'\e038';
+}
+
+.oi-circle-x:before {
+ content:'\e039';
+}
+
+.oi-clipboard:before {
+ content:'\e03a';
+}
+
+.oi-clock:before {
+ content:'\e03b';
+}
+
+.oi-cloud-download:before {
+ content:'\e03c';
+}
+
+.oi-cloud-upload:before {
+ content:'\e03d';
+}
+
+.oi-cloud:before {
+ content:'\e03e';
+}
+
+.oi-cloudy:before {
+ content:'\e03f';
+}
+
+.oi-code:before {
+ content:'\e040';
+}
+
+.oi-cog:before {
+ content:'\e041';
+}
+
+.oi-collapse-down:before {
+ content:'\e042';
+}
+
+.oi-collapse-left:before {
+ content:'\e043';
+}
+
+.oi-collapse-right:before {
+ content:'\e044';
+}
+
+.oi-collapse-up:before {
+ content:'\e045';
+}
+
+.oi-command:before {
+ content:'\e046';
+}
+
+.oi-comment-square:before {
+ content:'\e047';
+}
+
+.oi-compass:before {
+ content:'\e048';
+}
+
+.oi-contrast:before {
+ content:'\e049';
+}
+
+.oi-copywriting:before {
+ content:'\e04a';
+}
+
+.oi-credit-card:before {
+ content:'\e04b';
+}
+
+.oi-crop:before {
+ content:'\e04c';
+}
+
+.oi-dashboard:before {
+ content:'\e04d';
+}
+
+.oi-data-transfer-download:before {
+ content:'\e04e';
+}
+
+.oi-data-transfer-upload:before {
+ content:'\e04f';
+}
+
+.oi-delete:before {
+ content:'\e050';
+}
+
+.oi-dial:before {
+ content:'\e051';
+}
+
+.oi-document:before {
+ content:'\e052';
+}
+
+.oi-dollar:before {
+ content:'\e053';
+}
+
+.oi-double-quote-sans-left:before {
+ content:'\e054';
+}
+
+.oi-double-quote-sans-right:before {
+ content:'\e055';
+}
+
+.oi-double-quote-serif-left:before {
+ content:'\e056';
+}
+
+.oi-double-quote-serif-right:before {
+ content:'\e057';
+}
+
+.oi-droplet:before {
+ content:'\e058';
+}
+
+.oi-eject:before {
+ content:'\e059';
+}
+
+.oi-elevator:before {
+ content:'\e05a';
+}
+
+.oi-ellipses:before {
+ content:'\e05b';
+}
+
+.oi-envelope-closed:before {
+ content:'\e05c';
+}
+
+.oi-envelope-open:before {
+ content:'\e05d';
+}
+
+.oi-euro:before {
+ content:'\e05e';
+}
+
+.oi-excerpt:before {
+ content:'\e05f';
+}
+
+.oi-expand-down:before {
+ content:'\e060';
+}
+
+.oi-expand-left:before {
+ content:'\e061';
+}
+
+.oi-expand-right:before {
+ content:'\e062';
+}
+
+.oi-expand-up:before {
+ content:'\e063';
+}
+
+.oi-external-link:before {
+ content:'\e064';
+}
+
+.oi-eye:before {
+ content:'\e065';
+}
+
+.oi-eyedropper:before {
+ content:'\e066';
+}
+
+.oi-file:before {
+ content:'\e067';
+}
+
+.oi-fire:before {
+ content:'\e068';
+}
+
+.oi-flag:before {
+ content:'\e069';
+}
+
+.oi-flash:before {
+ content:'\e06a';
+}
+
+.oi-folder:before {
+ content:'\e06b';
+}
+
+.oi-fork:before {
+ content:'\e06c';
+}
+
+.oi-fullscreen-enter:before {
+ content:'\e06d';
+}
+
+.oi-fullscreen-exit:before {
+ content:'\e06e';
+}
+
+.oi-globe:before {
+ content:'\e06f';
+}
+
+.oi-graph:before {
+ content:'\e070';
+}
+
+.oi-grid-four-up:before {
+ content:'\e071';
+}
+
+.oi-grid-three-up:before {
+ content:'\e072';
+}
+
+.oi-grid-two-up:before {
+ content:'\e073';
+}
+
+.oi-hard-drive:before {
+ content:'\e074';
+}
+
+.oi-header:before {
+ content:'\e075';
+}
+
+.oi-headphones:before {
+ content:'\e076';
+}
+
+.oi-heart:before {
+ content:'\e077';
+}
+
+.oi-home:before {
+ content:'\e078';
+}
+
+.oi-image:before {
+ content:'\e079';
+}
+
+.oi-inbox:before {
+ content:'\e07a';
+}
+
+.oi-infinity:before {
+ content:'\e07b';
+}
+
+.oi-info:before {
+ content:'\e07c';
+}
+
+.oi-italic:before {
+ content:'\e07d';
+}
+
+.oi-justify-center:before {
+ content:'\e07e';
+}
+
+.oi-justify-left:before {
+ content:'\e07f';
+}
+
+.oi-justify-right:before {
+ content:'\e080';
+}
+
+.oi-key:before {
+ content:'\e081';
+}
+
+.oi-laptop:before {
+ content:'\e082';
+}
+
+.oi-layers:before {
+ content:'\e083';
+}
+
+.oi-lightbulb:before {
+ content:'\e084';
+}
+
+.oi-link-broken:before {
+ content:'\e085';
+}
+
+.oi-link-intact:before {
+ content:'\e086';
+}
+
+.oi-list-rich:before {
+ content:'\e087';
+}
+
+.oi-list:before {
+ content:'\e088';
+}
+
+.oi-location:before {
+ content:'\e089';
+}
+
+.oi-lock-locked:before {
+ content:'\e08a';
+}
+
+.oi-lock-unlocked:before {
+ content:'\e08b';
+}
+
+.oi-loop-circular:before {
+ content:'\e08c';
+}
+
+.oi-loop-square:before {
+ content:'\e08d';
+}
+
+.oi-loop:before {
+ content:'\e08e';
+}
+
+.oi-magnifying-glass:before {
+ content:'\e08f';
+}
+
+.oi-map-marker:before {
+ content:'\e090';
+}
+
+.oi-map:before {
+ content:'\e091';
+}
+
+.oi-media-pause:before {
+ content:'\e092';
+}
+
+.oi-media-play:before {
+ content:'\e093';
+}
+
+.oi-media-record:before {
+ content:'\e094';
+}
+
+.oi-media-skip-backward:before {
+ content:'\e095';
+}
+
+.oi-media-skip-forward:before {
+ content:'\e096';
+}
+
+.oi-media-step-backward:before {
+ content:'\e097';
+}
+
+.oi-media-step-forward:before {
+ content:'\e098';
+}
+
+.oi-media-stop:before {
+ content:'\e099';
+}
+
+.oi-medical-cross:before {
+ content:'\e09a';
+}
+
+.oi-menu:before {
+ content:'\e09b';
+}
+
+.oi-microphone:before {
+ content:'\e09c';
+}
+
+.oi-minus:before {
+ content:'\e09d';
+}
+
+.oi-monitor:before {
+ content:'\e09e';
+}
+
+.oi-moon:before {
+ content:'\e09f';
+}
+
+.oi-move:before {
+ content:'\e0a0';
+}
+
+.oi-musical-note:before {
+ content:'\e0a1';
+}
+
+.oi-paperclip:before {
+ content:'\e0a2';
+}
+
+.oi-pencil:before {
+ content:'\e0a3';
+}
+
+.oi-people:before {
+ content:'\e0a4';
+}
+
+.oi-person:before {
+ content:'\e0a5';
+}
+
+.oi-phone:before {
+ content:'\e0a6';
+}
+
+.oi-pie-chart:before {
+ content:'\e0a7';
+}
+
+.oi-pin:before {
+ content:'\e0a8';
+}
+
+.oi-play-circle:before {
+ content:'\e0a9';
+}
+
+.oi-plus:before {
+ content:'\e0aa';
+}
+
+.oi-power-standby:before {
+ content:'\e0ab';
+}
+
+.oi-print:before {
+ content:'\e0ac';
+}
+
+.oi-project:before {
+ content:'\e0ad';
+}
+
+.oi-pulse:before {
+ content:'\e0ae';
+}
+
+.oi-puzzle-piece:before {
+ content:'\e0af';
+}
+
+.oi-question-mark:before {
+ content:'\e0b0';
+}
+
+.oi-rain:before {
+ content:'\e0b1';
+}
+
+.oi-random:before {
+ content:'\e0b2';
+}
+
+.oi-reload:before {
+ content:'\e0b3';
+}
+
+.oi-resize-both:before {
+ content:'\e0b4';
+}
+
+.oi-resize-height:before {
+ content:'\e0b5';
+}
+
+.oi-resize-width:before {
+ content:'\e0b6';
+}
+
+.oi-rss-alt:before {
+ content:'\e0b7';
+}
+
+.oi-rss:before {
+ content:'\e0b8';
+}
+
+.oi-script:before {
+ content:'\e0b9';
+}
+
+.oi-share-boxed:before {
+ content:'\e0ba';
+}
+
+.oi-share:before {
+ content:'\e0bb';
+}
+
+.oi-shield:before {
+ content:'\e0bc';
+}
+
+.oi-signal:before {
+ content:'\e0bd';
+}
+
+.oi-signpost:before {
+ content:'\e0be';
+}
+
+.oi-sort-ascending:before {
+ content:'\e0bf';
+}
+
+.oi-sort-descending:before {
+ content:'\e0c0';
+}
+
+.oi-spreadsheet:before {
+ content:'\e0c1';
+}
+
+.oi-star:before {
+ content:'\e0c2';
+}
+
+.oi-sun:before {
+ content:'\e0c3';
+}
+
+.oi-tablet:before {
+ content:'\e0c4';
+}
+
+.oi-tag:before {
+ content:'\e0c5';
+}
+
+.oi-tags:before {
+ content:'\e0c6';
+}
+
+.oi-target:before {
+ content:'\e0c7';
+}
+
+.oi-task:before {
+ content:'\e0c8';
+}
+
+.oi-terminal:before {
+ content:'\e0c9';
+}
+
+.oi-text:before {
+ content:'\e0ca';
+}
+
+.oi-thumb-down:before {
+ content:'\e0cb';
+}
+
+.oi-thumb-up:before {
+ content:'\e0cc';
+}
+
+.oi-timer:before {
+ content:'\e0cd';
+}
+
+.oi-transfer:before {
+ content:'\e0ce';
+}
+
+.oi-trash:before {
+ content:'\e0cf';
+}
+
+.oi-underline:before {
+ content:'\e0d0';
+}
+
+.oi-vertical-align-bottom:before {
+ content:'\e0d1';
+}
+
+.oi-vertical-align-center:before {
+ content:'\e0d2';
+}
+
+.oi-vertical-align-top:before {
+ content:'\e0d3';
+}
+
+.oi-video:before {
+ content:'\e0d4';
+}
+
+.oi-volume-high:before {
+ content:'\e0d5';
+}
+
+.oi-volume-low:before {
+ content:'\e0d6';
+}
+
+.oi-volume-off:before {
+ content:'\e0d7';
+}
+
+.oi-warning:before {
+ content:'\e0d8';
+}
+
+.oi-wifi:before {
+ content:'\e0d9';
+}
+
+.oi-wrench:before {
+ content:'\e0da';
+}
+
+.oi-x:before {
+ content:'\e0db';
+}
+
+.oi-yen:before {
+ content:'\e0dc';
+}
+
+.oi-zoom-in:before {
+ content:'\e0dd';
+}
+
+.oi-zoom-out:before {
+ content:'\e0de';
+}
diff --git a/public/font/css/open-iconic-bootstrap.less b/public/font/css/open-iconic-bootstrap.less
new file mode 100644
index 0000000..fc3fe34
--- /dev/null
+++ b/public/font/css/open-iconic-bootstrap.less
@@ -0,0 +1,960 @@
+/* Bootstrap */
+
+/* Override Bootstrap default variable */
+//@icon-font-path: "../fonts/";
+
+@font-face {
+ font-family: 'Icons';
+ src: ~"url('@{icon-font-path}open-iconic.eot')";
+ src: ~"url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype')",
+ ~"url('@{icon-font-path}open-iconic.woff') format('woff')",
+ ~"url('@{icon-font-path}open-iconic.ttf') format('truetype')",
+ ~"url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg')";
+ font-weight: normal;
+ font-style: normal;
+}
+
+// Catchall baseclass
+.oi {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ &:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+ }
+
+ &.oi-align-center:before {
+ text-align: center;
+ }
+
+ &.oi-align-left:before {
+ text-align: left;
+ }
+
+ &.oi-align-right:before {
+ text-align: right;
+ }
+
+
+ &.oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+ }
+
+ &.oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+ }
+
+ &.oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+ }
+}
+
+
+
+.oi-account-login:before {
+ content:"\e000";
+}
+
+.oi-account-logout:before {
+ content:"\e001";
+}
+
+.oi-action-redo:before {
+ content:"\e002";
+}
+
+.oi-action-undo:before {
+ content:"\e003";
+}
+
+.oi-align-center:before {
+ content:"\e004";
+}
+
+.oi-align-left:before {
+ content:"\e005";
+}
+
+.oi-align-right:before {
+ content:"\e006";
+}
+
+.oi-aperture:before {
+ content:"\e007";
+}
+
+.oi-arrow-bottom:before {
+ content:"\e008";
+}
+
+.oi-arrow-circle-bottom:before {
+ content:"\e009";
+}
+
+.oi-arrow-circle-left:before {
+ content:"\e00a";
+}
+
+.oi-arrow-circle-right:before {
+ content:"\e00b";
+}
+
+.oi-arrow-circle-top:before {
+ content:"\e00c";
+}
+
+.oi-arrow-left:before {
+ content:"\e00d";
+}
+
+.oi-arrow-right:before {
+ content:"\e00e";
+}
+
+.oi-arrow-thick-bottom:before {
+ content:"\e00f";
+}
+
+.oi-arrow-thick-left:before {
+ content:"\e010";
+}
+
+.oi-arrow-thick-right:before {
+ content:"\e011";
+}
+
+.oi-arrow-thick-top:before {
+ content:"\e012";
+}
+
+.oi-arrow-top:before {
+ content:"\e013";
+}
+
+.oi-audio-spectrum:before {
+ content:"\e014";
+}
+
+.oi-audio:before {
+ content:"\e015";
+}
+
+.oi-badge:before {
+ content:"\e016";
+}
+
+.oi-ban:before {
+ content:"\e017";
+}
+
+.oi-bar-chart:before {
+ content:"\e018";
+}
+
+.oi-basket:before {
+ content:"\e019";
+}
+
+.oi-battery-empty:before {
+ content:"\e01a";
+}
+
+.oi-battery-full:before {
+ content:"\e01b";
+}
+
+.oi-beaker:before {
+ content:"\e01c";
+}
+
+.oi-bell:before {
+ content:"\e01d";
+}
+
+.oi-bluetooth:before {
+ content:"\e01e";
+}
+
+.oi-bold:before {
+ content:"\e01f";
+}
+
+.oi-bolt:before {
+ content:"\e020";
+}
+
+.oi-book:before {
+ content:"\e021";
+}
+
+.oi-bookmark:before {
+ content:"\e022";
+}
+
+.oi-box:before {
+ content:"\e023";
+}
+
+.oi-briefcase:before {
+ content:"\e024";
+}
+
+.oi-british-pound:before {
+ content:"\e025";
+}
+
+.oi-browser:before {
+ content:"\e026";
+}
+
+.oi-brush:before {
+ content:"\e027";
+}
+
+.oi-bug:before {
+ content:"\e028";
+}
+
+.oi-bullhorn:before {
+ content:"\e029";
+}
+
+.oi-calculator:before {
+ content:"\e02a";
+}
+
+.oi-calendar:before {
+ content:"\e02b";
+}
+
+.oi-camera-slr:before {
+ content:"\e02c";
+}
+
+.oi-caret-bottom:before {
+ content:"\e02d";
+}
+
+.oi-caret-left:before {
+ content:"\e02e";
+}
+
+.oi-caret-right:before {
+ content:"\e02f";
+}
+
+.oi-caret-top:before {
+ content:"\e030";
+}
+
+.oi-cart:before {
+ content:"\e031";
+}
+
+.oi-chat:before {
+ content:"\e032";
+}
+
+.oi-check:before {
+ content:"\e033";
+}
+
+.oi-chevron-bottom:before {
+ content:"\e034";
+}
+
+.oi-chevron-left:before {
+ content:"\e035";
+}
+
+.oi-chevron-right:before {
+ content:"\e036";
+}
+
+.oi-chevron-top:before {
+ content:"\e037";
+}
+
+.oi-circle-check:before {
+ content:"\e038";
+}
+
+.oi-circle-x:before {
+ content:"\e039";
+}
+
+.oi-clipboard:before {
+ content:"\e03a";
+}
+
+.oi-clock:before {
+ content:"\e03b";
+}
+
+.oi-cloud-download:before {
+ content:"\e03c";
+}
+
+.oi-cloud-upload:before {
+ content:"\e03d";
+}
+
+.oi-cloud:before {
+ content:"\e03e";
+}
+
+.oi-cloudy:before {
+ content:"\e03f";
+}
+
+.oi-code:before {
+ content:"\e040";
+}
+
+.oi-cog:before {
+ content:"\e041";
+}
+
+.oi-collapse-down:before {
+ content:"\e042";
+}
+
+.oi-collapse-left:before {
+ content:"\e043";
+}
+
+.oi-collapse-right:before {
+ content:"\e044";
+}
+
+.oi-collapse-up:before {
+ content:"\e045";
+}
+
+.oi-command:before {
+ content:"\e046";
+}
+
+.oi-comment-square:before {
+ content:"\e047";
+}
+
+.oi-compass:before {
+ content:"\e048";
+}
+
+.oi-contrast:before {
+ content:"\e049";
+}
+
+.oi-copywriting:before {
+ content:"\e04a";
+}
+
+.oi-credit-card:before {
+ content:"\e04b";
+}
+
+.oi-crop:before {
+ content:"\e04c";
+}
+
+.oi-dashboard:before {
+ content:"\e04d";
+}
+
+.oi-data-transfer-download:before {
+ content:"\e04e";
+}
+
+.oi-data-transfer-upload:before {
+ content:"\e04f";
+}
+
+.oi-delete:before {
+ content:"\e050";
+}
+
+.oi-dial:before {
+ content:"\e051";
+}
+
+.oi-document:before {
+ content:"\e052";
+}
+
+.oi-dollar:before {
+ content:"\e053";
+}
+
+.oi-double-quote-sans-left:before {
+ content:"\e054";
+}
+
+.oi-double-quote-sans-right:before {
+ content:"\e055";
+}
+
+.oi-double-quote-serif-left:before {
+ content:"\e056";
+}
+
+.oi-double-quote-serif-right:before {
+ content:"\e057";
+}
+
+.oi-droplet:before {
+ content:"\e058";
+}
+
+.oi-eject:before {
+ content:"\e059";
+}
+
+.oi-elevator:before {
+ content:"\e05a";
+}
+
+.oi-ellipses:before {
+ content:"\e05b";
+}
+
+.oi-envelope-closed:before {
+ content:"\e05c";
+}
+
+.oi-envelope-open:before {
+ content:"\e05d";
+}
+
+.oi-euro:before {
+ content:"\e05e";
+}
+
+.oi-excerpt:before {
+ content:"\e05f";
+}
+
+.oi-expand-down:before {
+ content:"\e060";
+}
+
+.oi-expand-left:before {
+ content:"\e061";
+}
+
+.oi-expand-right:before {
+ content:"\e062";
+}
+
+.oi-expand-up:before {
+ content:"\e063";
+}
+
+.oi-external-link:before {
+ content:"\e064";
+}
+
+.oi-eye:before {
+ content:"\e065";
+}
+
+.oi-eyedropper:before {
+ content:"\e066";
+}
+
+.oi-file:before {
+ content:"\e067";
+}
+
+.oi-fire:before {
+ content:"\e068";
+}
+
+.oi-flag:before {
+ content:"\e069";
+}
+
+.oi-flash:before {
+ content:"\e06a";
+}
+
+.oi-folder:before {
+ content:"\e06b";
+}
+
+.oi-fork:before {
+ content:"\e06c";
+}
+
+.oi-fullscreen-enter:before {
+ content:"\e06d";
+}
+
+.oi-fullscreen-exit:before {
+ content:"\e06e";
+}
+
+.oi-globe:before {
+ content:"\e06f";
+}
+
+.oi-graph:before {
+ content:"\e070";
+}
+
+.oi-grid-four-up:before {
+ content:"\e071";
+}
+
+.oi-grid-three-up:before {
+ content:"\e072";
+}
+
+.oi-grid-two-up:before {
+ content:"\e073";
+}
+
+.oi-hard-drive:before {
+ content:"\e074";
+}
+
+.oi-header:before {
+ content:"\e075";
+}
+
+.oi-headphones:before {
+ content:"\e076";
+}
+
+.oi-heart:before {
+ content:"\e077";
+}
+
+.oi-home:before {
+ content:"\e078";
+}
+
+.oi-image:before {
+ content:"\e079";
+}
+
+.oi-inbox:before {
+ content:"\e07a";
+}
+
+.oi-infinity:before {
+ content:"\e07b";
+}
+
+.oi-info:before {
+ content:"\e07c";
+}
+
+.oi-italic:before {
+ content:"\e07d";
+}
+
+.oi-justify-center:before {
+ content:"\e07e";
+}
+
+.oi-justify-left:before {
+ content:"\e07f";
+}
+
+.oi-justify-right:before {
+ content:"\e080";
+}
+
+.oi-key:before {
+ content:"\e081";
+}
+
+.oi-laptop:before {
+ content:"\e082";
+}
+
+.oi-layers:before {
+ content:"\e083";
+}
+
+.oi-lightbulb:before {
+ content:"\e084";
+}
+
+.oi-link-broken:before {
+ content:"\e085";
+}
+
+.oi-link-intact:before {
+ content:"\e086";
+}
+
+.oi-list-rich:before {
+ content:"\e087";
+}
+
+.oi-list:before {
+ content:"\e088";
+}
+
+.oi-location:before {
+ content:"\e089";
+}
+
+.oi-lock-locked:before {
+ content:"\e08a";
+}
+
+.oi-lock-unlocked:before {
+ content:"\e08b";
+}
+
+.oi-loop-circular:before {
+ content:"\e08c";
+}
+
+.oi-loop-square:before {
+ content:"\e08d";
+}
+
+.oi-loop:before {
+ content:"\e08e";
+}
+
+.oi-magnifying-glass:before {
+ content:"\e08f";
+}
+
+.oi-map-marker:before {
+ content:"\e090";
+}
+
+.oi-map:before {
+ content:"\e091";
+}
+
+.oi-media-pause:before {
+ content:"\e092";
+}
+
+.oi-media-play:before {
+ content:"\e093";
+}
+
+.oi-media-record:before {
+ content:"\e094";
+}
+
+.oi-media-skip-backward:before {
+ content:"\e095";
+}
+
+.oi-media-skip-forward:before {
+ content:"\e096";
+}
+
+.oi-media-step-backward:before {
+ content:"\e097";
+}
+
+.oi-media-step-forward:before {
+ content:"\e098";
+}
+
+.oi-media-stop:before {
+ content:"\e099";
+}
+
+.oi-medical-cross:before {
+ content:"\e09a";
+}
+
+.oi-menu:before {
+ content:"\e09b";
+}
+
+.oi-microphone:before {
+ content:"\e09c";
+}
+
+.oi-minus:before {
+ content:"\e09d";
+}
+
+.oi-monitor:before {
+ content:"\e09e";
+}
+
+.oi-moon:before {
+ content:"\e09f";
+}
+
+.oi-move:before {
+ content:"\e0a0";
+}
+
+.oi-musical-note:before {
+ content:"\e0a1";
+}
+
+.oi-paperclip:before {
+ content:"\e0a2";
+}
+
+.oi-pencil:before {
+ content:"\e0a3";
+}
+
+.oi-people:before {
+ content:"\e0a4";
+}
+
+.oi-person:before {
+ content:"\e0a5";
+}
+
+.oi-phone:before {
+ content:"\e0a6";
+}
+
+.oi-pie-chart:before {
+ content:"\e0a7";
+}
+
+.oi-pin:before {
+ content:"\e0a8";
+}
+
+.oi-play-circle:before {
+ content:"\e0a9";
+}
+
+.oi-plus:before {
+ content:"\e0aa";
+}
+
+.oi-power-standby:before {
+ content:"\e0ab";
+}
+
+.oi-print:before {
+ content:"\e0ac";
+}
+
+.oi-project:before {
+ content:"\e0ad";
+}
+
+.oi-pulse:before {
+ content:"\e0ae";
+}
+
+.oi-puzzle-piece:before {
+ content:"\e0af";
+}
+
+.oi-question-mark:before {
+ content:"\e0b0";
+}
+
+.oi-rain:before {
+ content:"\e0b1";
+}
+
+.oi-random:before {
+ content:"\e0b2";
+}
+
+.oi-reload:before {
+ content:"\e0b3";
+}
+
+.oi-resize-both:before {
+ content:"\e0b4";
+}
+
+.oi-resize-height:before {
+ content:"\e0b5";
+}
+
+.oi-resize-width:before {
+ content:"\e0b6";
+}
+
+.oi-rss-alt:before {
+ content:"\e0b7";
+}
+
+.oi-rss:before {
+ content:"\e0b8";
+}
+
+.oi-script:before {
+ content:"\e0b9";
+}
+
+.oi-share-boxed:before {
+ content:"\e0ba";
+}
+
+.oi-share:before {
+ content:"\e0bb";
+}
+
+.oi-shield:before {
+ content:"\e0bc";
+}
+
+.oi-signal:before {
+ content:"\e0bd";
+}
+
+.oi-signpost:before {
+ content:"\e0be";
+}
+
+.oi-sort-ascending:before {
+ content:"\e0bf";
+}
+
+.oi-sort-descending:before {
+ content:"\e0c0";
+}
+
+.oi-spreadsheet:before {
+ content:"\e0c1";
+}
+
+.oi-star:before {
+ content:"\e0c2";
+}
+
+.oi-sun:before {
+ content:"\e0c3";
+}
+
+.oi-tablet:before {
+ content:"\e0c4";
+}
+
+.oi-tag:before {
+ content:"\e0c5";
+}
+
+.oi-tags:before {
+ content:"\e0c6";
+}
+
+.oi-target:before {
+ content:"\e0c7";
+}
+
+.oi-task:before {
+ content:"\e0c8";
+}
+
+.oi-terminal:before {
+ content:"\e0c9";
+}
+
+.oi-text:before {
+ content:"\e0ca";
+}
+
+.oi-thumb-down:before {
+ content:"\e0cb";
+}
+
+.oi-thumb-up:before {
+ content:"\e0cc";
+}
+
+.oi-timer:before {
+ content:"\e0cd";
+}
+
+.oi-transfer:before {
+ content:"\e0ce";
+}
+
+.oi-trash:before {
+ content:"\e0cf";
+}
+
+.oi-underline:before {
+ content:"\e0d0";
+}
+
+.oi-vertical-align-bottom:before {
+ content:"\e0d1";
+}
+
+.oi-vertical-align-center:before {
+ content:"\e0d2";
+}
+
+.oi-vertical-align-top:before {
+ content:"\e0d3";
+}
+
+.oi-video:before {
+ content:"\e0d4";
+}
+
+.oi-volume-high:before {
+ content:"\e0d5";
+}
+
+.oi-volume-low:before {
+ content:"\e0d6";
+}
+
+.oi-volume-off:before {
+ content:"\e0d7";
+}
+
+.oi-warning:before {
+ content:"\e0d8";
+}
+
+.oi-wifi:before {
+ content:"\e0d9";
+}
+
+.oi-wrench:before {
+ content:"\e0da";
+}
+
+.oi-x:before {
+ content:"\e0db";
+}
+
+.oi-yen:before {
+ content:"\e0dc";
+}
+
+.oi-zoom-in:before {
+ content:"\e0dd";
+}
+
+.oi-zoom-out:before {
+ content:"\e0de";
+}
+
diff --git a/public/font/css/open-iconic-bootstrap.min.css b/public/font/css/open-iconic-bootstrap.min.css
new file mode 100644
index 0000000..4664f2e
--- /dev/null
+++ b/public/font/css/open-iconic-bootstrap.min.css
@@ -0,0 +1 @@
+@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'}
\ No newline at end of file
diff --git a/public/font/css/open-iconic-bootstrap.scss b/public/font/css/open-iconic-bootstrap.scss
new file mode 100644
index 0000000..18f01e2
--- /dev/null
+++ b/public/font/css/open-iconic-bootstrap.scss
@@ -0,0 +1,958 @@
+/* Bootstrap */
+
+/* Override Bootstrap default variable */
+$icon-font-path: '../fonts/' !default;
+
+@font-face {
+ font-family: 'Icons';
+ src: url('#{$icon-font-path}open-iconic.eot');
+ src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+// Catchall baseclass
+.oi {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+
+ &:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+ }
+
+ &.oi-align-center:before {
+ text-align: center;
+ }
+
+ &.oi-align-left:before {
+ text-align: left;
+ }
+
+ &.oi-align-right:before {
+ text-align: right;
+ }
+
+
+ &.oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+ }
+
+ &.oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+ }
+
+ &.oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+ }
+}
+
+
+
+.oi-account-login:before {
+ content:'\e000';
+}
+
+.oi-account-logout:before {
+ content:'\e001';
+}
+
+.oi-action-redo:before {
+ content:'\e002';
+}
+
+.oi-action-undo:before {
+ content:'\e003';
+}
+
+.oi-align-center:before {
+ content:'\e004';
+}
+
+.oi-align-left:before {
+ content:'\e005';
+}
+
+.oi-align-right:before {
+ content:'\e006';
+}
+
+.oi-aperture:before {
+ content:'\e007';
+}
+
+.oi-arrow-bottom:before {
+ content:'\e008';
+}
+
+.oi-arrow-circle-bottom:before {
+ content:'\e009';
+}
+
+.oi-arrow-circle-left:before {
+ content:'\e00a';
+}
+
+.oi-arrow-circle-right:before {
+ content:'\e00b';
+}
+
+.oi-arrow-circle-top:before {
+ content:'\e00c';
+}
+
+.oi-arrow-left:before {
+ content:'\e00d';
+}
+
+.oi-arrow-right:before {
+ content:'\e00e';
+}
+
+.oi-arrow-thick-bottom:before {
+ content:'\e00f';
+}
+
+.oi-arrow-thick-left:before {
+ content:'\e010';
+}
+
+.oi-arrow-thick-right:before {
+ content:'\e011';
+}
+
+.oi-arrow-thick-top:before {
+ content:'\e012';
+}
+
+.oi-arrow-top:before {
+ content:'\e013';
+}
+
+.oi-audio-spectrum:before {
+ content:'\e014';
+}
+
+.oi-audio:before {
+ content:'\e015';
+}
+
+.oi-badge:before {
+ content:'\e016';
+}
+
+.oi-ban:before {
+ content:'\e017';
+}
+
+.oi-bar-chart:before {
+ content:'\e018';
+}
+
+.oi-basket:before {
+ content:'\e019';
+}
+
+.oi-battery-empty:before {
+ content:'\e01a';
+}
+
+.oi-battery-full:before {
+ content:'\e01b';
+}
+
+.oi-beaker:before {
+ content:'\e01c';
+}
+
+.oi-bell:before {
+ content:'\e01d';
+}
+
+.oi-bluetooth:before {
+ content:'\e01e';
+}
+
+.oi-bold:before {
+ content:'\e01f';
+}
+
+.oi-bolt:before {
+ content:'\e020';
+}
+
+.oi-book:before {
+ content:'\e021';
+}
+
+.oi-bookmark:before {
+ content:'\e022';
+}
+
+.oi-box:before {
+ content:'\e023';
+}
+
+.oi-briefcase:before {
+ content:'\e024';
+}
+
+.oi-british-pound:before {
+ content:'\e025';
+}
+
+.oi-browser:before {
+ content:'\e026';
+}
+
+.oi-brush:before {
+ content:'\e027';
+}
+
+.oi-bug:before {
+ content:'\e028';
+}
+
+.oi-bullhorn:before {
+ content:'\e029';
+}
+
+.oi-calculator:before {
+ content:'\e02a';
+}
+
+.oi-calendar:before {
+ content:'\e02b';
+}
+
+.oi-camera-slr:before {
+ content:'\e02c';
+}
+
+.oi-caret-bottom:before {
+ content:'\e02d';
+}
+
+.oi-caret-left:before {
+ content:'\e02e';
+}
+
+.oi-caret-right:before {
+ content:'\e02f';
+}
+
+.oi-caret-top:before {
+ content:'\e030';
+}
+
+.oi-cart:before {
+ content:'\e031';
+}
+
+.oi-chat:before {
+ content:'\e032';
+}
+
+.oi-check:before {
+ content:'\e033';
+}
+
+.oi-chevron-bottom:before {
+ content:'\e034';
+}
+
+.oi-chevron-left:before {
+ content:'\e035';
+}
+
+.oi-chevron-right:before {
+ content:'\e036';
+}
+
+.oi-chevron-top:before {
+ content:'\e037';
+}
+
+.oi-circle-check:before {
+ content:'\e038';
+}
+
+.oi-circle-x:before {
+ content:'\e039';
+}
+
+.oi-clipboard:before {
+ content:'\e03a';
+}
+
+.oi-clock:before {
+ content:'\e03b';
+}
+
+.oi-cloud-download:before {
+ content:'\e03c';
+}
+
+.oi-cloud-upload:before {
+ content:'\e03d';
+}
+
+.oi-cloud:before {
+ content:'\e03e';
+}
+
+.oi-cloudy:before {
+ content:'\e03f';
+}
+
+.oi-code:before {
+ content:'\e040';
+}
+
+.oi-cog:before {
+ content:'\e041';
+}
+
+.oi-collapse-down:before {
+ content:'\e042';
+}
+
+.oi-collapse-left:before {
+ content:'\e043';
+}
+
+.oi-collapse-right:before {
+ content:'\e044';
+}
+
+.oi-collapse-up:before {
+ content:'\e045';
+}
+
+.oi-command:before {
+ content:'\e046';
+}
+
+.oi-comment-square:before {
+ content:'\e047';
+}
+
+.oi-compass:before {
+ content:'\e048';
+}
+
+.oi-contrast:before {
+ content:'\e049';
+}
+
+.oi-copywriting:before {
+ content:'\e04a';
+}
+
+.oi-credit-card:before {
+ content:'\e04b';
+}
+
+.oi-crop:before {
+ content:'\e04c';
+}
+
+.oi-dashboard:before {
+ content:'\e04d';
+}
+
+.oi-data-transfer-download:before {
+ content:'\e04e';
+}
+
+.oi-data-transfer-upload:before {
+ content:'\e04f';
+}
+
+.oi-delete:before {
+ content:'\e050';
+}
+
+.oi-dial:before {
+ content:'\e051';
+}
+
+.oi-document:before {
+ content:'\e052';
+}
+
+.oi-dollar:before {
+ content:'\e053';
+}
+
+.oi-double-quote-sans-left:before {
+ content:'\e054';
+}
+
+.oi-double-quote-sans-right:before {
+ content:'\e055';
+}
+
+.oi-double-quote-serif-left:before {
+ content:'\e056';
+}
+
+.oi-double-quote-serif-right:before {
+ content:'\e057';
+}
+
+.oi-droplet:before {
+ content:'\e058';
+}
+
+.oi-eject:before {
+ content:'\e059';
+}
+
+.oi-elevator:before {
+ content:'\e05a';
+}
+
+.oi-ellipses:before {
+ content:'\e05b';
+}
+
+.oi-envelope-closed:before {
+ content:'\e05c';
+}
+
+.oi-envelope-open:before {
+ content:'\e05d';
+}
+
+.oi-euro:before {
+ content:'\e05e';
+}
+
+.oi-excerpt:before {
+ content:'\e05f';
+}
+
+.oi-expand-down:before {
+ content:'\e060';
+}
+
+.oi-expand-left:before {
+ content:'\e061';
+}
+
+.oi-expand-right:before {
+ content:'\e062';
+}
+
+.oi-expand-up:before {
+ content:'\e063';
+}
+
+.oi-external-link:before {
+ content:'\e064';
+}
+
+.oi-eye:before {
+ content:'\e065';
+}
+
+.oi-eyedropper:before {
+ content:'\e066';
+}
+
+.oi-file:before {
+ content:'\e067';
+}
+
+.oi-fire:before {
+ content:'\e068';
+}
+
+.oi-flag:before {
+ content:'\e069';
+}
+
+.oi-flash:before {
+ content:'\e06a';
+}
+
+.oi-folder:before {
+ content:'\e06b';
+}
+
+.oi-fork:before {
+ content:'\e06c';
+}
+
+.oi-fullscreen-enter:before {
+ content:'\e06d';
+}
+
+.oi-fullscreen-exit:before {
+ content:'\e06e';
+}
+
+.oi-globe:before {
+ content:'\e06f';
+}
+
+.oi-graph:before {
+ content:'\e070';
+}
+
+.oi-grid-four-up:before {
+ content:'\e071';
+}
+
+.oi-grid-three-up:before {
+ content:'\e072';
+}
+
+.oi-grid-two-up:before {
+ content:'\e073';
+}
+
+.oi-hard-drive:before {
+ content:'\e074';
+}
+
+.oi-header:before {
+ content:'\e075';
+}
+
+.oi-headphones:before {
+ content:'\e076';
+}
+
+.oi-heart:before {
+ content:'\e077';
+}
+
+.oi-home:before {
+ content:'\e078';
+}
+
+.oi-image:before {
+ content:'\e079';
+}
+
+.oi-inbox:before {
+ content:'\e07a';
+}
+
+.oi-infinity:before {
+ content:'\e07b';
+}
+
+.oi-info:before {
+ content:'\e07c';
+}
+
+.oi-italic:before {
+ content:'\e07d';
+}
+
+.oi-justify-center:before {
+ content:'\e07e';
+}
+
+.oi-justify-left:before {
+ content:'\e07f';
+}
+
+.oi-justify-right:before {
+ content:'\e080';
+}
+
+.oi-key:before {
+ content:'\e081';
+}
+
+.oi-laptop:before {
+ content:'\e082';
+}
+
+.oi-layers:before {
+ content:'\e083';
+}
+
+.oi-lightbulb:before {
+ content:'\e084';
+}
+
+.oi-link-broken:before {
+ content:'\e085';
+}
+
+.oi-link-intact:before {
+ content:'\e086';
+}
+
+.oi-list-rich:before {
+ content:'\e087';
+}
+
+.oi-list:before {
+ content:'\e088';
+}
+
+.oi-location:before {
+ content:'\e089';
+}
+
+.oi-lock-locked:before {
+ content:'\e08a';
+}
+
+.oi-lock-unlocked:before {
+ content:'\e08b';
+}
+
+.oi-loop-circular:before {
+ content:'\e08c';
+}
+
+.oi-loop-square:before {
+ content:'\e08d';
+}
+
+.oi-loop:before {
+ content:'\e08e';
+}
+
+.oi-magnifying-glass:before {
+ content:'\e08f';
+}
+
+.oi-map-marker:before {
+ content:'\e090';
+}
+
+.oi-map:before {
+ content:'\e091';
+}
+
+.oi-media-pause:before {
+ content:'\e092';
+}
+
+.oi-media-play:before {
+ content:'\e093';
+}
+
+.oi-media-record:before {
+ content:'\e094';
+}
+
+.oi-media-skip-backward:before {
+ content:'\e095';
+}
+
+.oi-media-skip-forward:before {
+ content:'\e096';
+}
+
+.oi-media-step-backward:before {
+ content:'\e097';
+}
+
+.oi-media-step-forward:before {
+ content:'\e098';
+}
+
+.oi-media-stop:before {
+ content:'\e099';
+}
+
+.oi-medical-cross:before {
+ content:'\e09a';
+}
+
+.oi-menu:before {
+ content:'\e09b';
+}
+
+.oi-microphone:before {
+ content:'\e09c';
+}
+
+.oi-minus:before {
+ content:'\e09d';
+}
+
+.oi-monitor:before {
+ content:'\e09e';
+}
+
+.oi-moon:before {
+ content:'\e09f';
+}
+
+.oi-move:before {
+ content:'\e0a0';
+}
+
+.oi-musical-note:before {
+ content:'\e0a1';
+}
+
+.oi-paperclip:before {
+ content:'\e0a2';
+}
+
+.oi-pencil:before {
+ content:'\e0a3';
+}
+
+.oi-people:before {
+ content:'\e0a4';
+}
+
+.oi-person:before {
+ content:'\e0a5';
+}
+
+.oi-phone:before {
+ content:'\e0a6';
+}
+
+.oi-pie-chart:before {
+ content:'\e0a7';
+}
+
+.oi-pin:before {
+ content:'\e0a8';
+}
+
+.oi-play-circle:before {
+ content:'\e0a9';
+}
+
+.oi-plus:before {
+ content:'\e0aa';
+}
+
+.oi-power-standby:before {
+ content:'\e0ab';
+}
+
+.oi-print:before {
+ content:'\e0ac';
+}
+
+.oi-project:before {
+ content:'\e0ad';
+}
+
+.oi-pulse:before {
+ content:'\e0ae';
+}
+
+.oi-puzzle-piece:before {
+ content:'\e0af';
+}
+
+.oi-question-mark:before {
+ content:'\e0b0';
+}
+
+.oi-rain:before {
+ content:'\e0b1';
+}
+
+.oi-random:before {
+ content:'\e0b2';
+}
+
+.oi-reload:before {
+ content:'\e0b3';
+}
+
+.oi-resize-both:before {
+ content:'\e0b4';
+}
+
+.oi-resize-height:before {
+ content:'\e0b5';
+}
+
+.oi-resize-width:before {
+ content:'\e0b6';
+}
+
+.oi-rss-alt:before {
+ content:'\e0b7';
+}
+
+.oi-rss:before {
+ content:'\e0b8';
+}
+
+.oi-script:before {
+ content:'\e0b9';
+}
+
+.oi-share-boxed:before {
+ content:'\e0ba';
+}
+
+.oi-share:before {
+ content:'\e0bb';
+}
+
+.oi-shield:before {
+ content:'\e0bc';
+}
+
+.oi-signal:before {
+ content:'\e0bd';
+}
+
+.oi-signpost:before {
+ content:'\e0be';
+}
+
+.oi-sort-ascending:before {
+ content:'\e0bf';
+}
+
+.oi-sort-descending:before {
+ content:'\e0c0';
+}
+
+.oi-spreadsheet:before {
+ content:'\e0c1';
+}
+
+.oi-star:before {
+ content:'\e0c2';
+}
+
+.oi-sun:before {
+ content:'\e0c3';
+}
+
+.oi-tablet:before {
+ content:'\e0c4';
+}
+
+.oi-tag:before {
+ content:'\e0c5';
+}
+
+.oi-tags:before {
+ content:'\e0c6';
+}
+
+.oi-target:before {
+ content:'\e0c7';
+}
+
+.oi-task:before {
+ content:'\e0c8';
+}
+
+.oi-terminal:before {
+ content:'\e0c9';
+}
+
+.oi-text:before {
+ content:'\e0ca';
+}
+
+.oi-thumb-down:before {
+ content:'\e0cb';
+}
+
+.oi-thumb-up:before {
+ content:'\e0cc';
+}
+
+.oi-timer:before {
+ content:'\e0cd';
+}
+
+.oi-transfer:before {
+ content:'\e0ce';
+}
+
+.oi-trash:before {
+ content:'\e0cf';
+}
+
+.oi-underline:before {
+ content:'\e0d0';
+}
+
+.oi-vertical-align-bottom:before {
+ content:'\e0d1';
+}
+
+.oi-vertical-align-center:before {
+ content:'\e0d2';
+}
+
+.oi-vertical-align-top:before {
+ content:'\e0d3';
+}
+
+.oi-video:before {
+ content:'\e0d4';
+}
+
+.oi-volume-high:before {
+ content:'\e0d5';
+}
+
+.oi-volume-low:before {
+ content:'\e0d6';
+}
+
+.oi-volume-off:before {
+ content:'\e0d7';
+}
+
+.oi-warning:before {
+ content:'\e0d8';
+}
+
+.oi-wifi:before {
+ content:'\e0d9';
+}
+
+.oi-wrench:before {
+ content:'\e0da';
+}
+
+.oi-x:before {
+ content:'\e0db';
+}
+
+.oi-yen:before {
+ content:'\e0dc';
+}
+
+.oi-zoom-in:before {
+ content:'\e0dd';
+}
+
+.oi-zoom-out:before {
+ content:'\e0de';
+}
+
diff --git a/public/font/css/open-iconic-bootstrap.styl b/public/font/css/open-iconic-bootstrap.styl
new file mode 100644
index 0000000..0afa254
--- /dev/null
+++ b/public/font/css/open-iconic-bootstrap.styl
@@ -0,0 +1,954 @@
+/* Bootstrap */
+
+@font-face
+ font-family 'Icons'
+ src url('../fonts/open-iconic.eot')
+ src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg')
+ font-weight normal
+ font-style normal
+
+
+// Catchall baseclass
+.oi
+ position relative
+ top 1px
+ display inline-block
+ font-family 'Icons'
+ font-style normal
+ font-weight normal
+ line-height 1
+ -webkit-font-smoothing antialiased
+ -moz-osx-font-smoothing grayscale
+
+
+ &:empty:before
+ width 1em
+ text-align center
+ box-sizing content-box
+
+ &.oi-align-center:before
+ text-align center
+
+
+ &.oi-align-left:before
+ text-align left
+
+
+ &.oi-align-right:before
+ text-align right
+
+
+
+ &.oi-flip-horizontal:before
+ -webkit-transform scale(-1, 1)
+ -ms-transform scale(-1, 1)
+ transform scale(-1, 1)
+
+
+ &.oi-flip-vertical:before
+ -webkit-transform scale(1, -1)
+ -ms-transform scale(-1, 1)
+ transform scale(1, -1)
+
+
+ &.oi-flip-horizontal-vertical:before
+ -webkit-transform scale(-1, -1)
+ -ms-transform scale(-1, 1)
+ transform scale(-1, -1)
+
+
+
+
+
+.oi-account-login:before {
+ content'\e000'
+}
+
+.oi-account-logout:before {
+ content'\e001'
+}
+
+.oi-action-redo:before {
+ content'\e002'
+}
+
+.oi-action-undo:before {
+ content'\e003'
+}
+
+.oi-align-center:before {
+ content'\e004'
+}
+
+.oi-align-left:before {
+ content'\e005'
+}
+
+.oi-align-right:before {
+ content'\e006'
+}
+
+.oi-aperture:before {
+ content'\e007'
+}
+
+.oi-arrow-bottom:before {
+ content'\e008'
+}
+
+.oi-arrow-circle-bottom:before {
+ content'\e009'
+}
+
+.oi-arrow-circle-left:before {
+ content'\e00a'
+}
+
+.oi-arrow-circle-right:before {
+ content'\e00b'
+}
+
+.oi-arrow-circle-top:before {
+ content'\e00c'
+}
+
+.oi-arrow-left:before {
+ content'\e00d'
+}
+
+.oi-arrow-right:before {
+ content'\e00e'
+}
+
+.oi-arrow-thick-bottom:before {
+ content'\e00f'
+}
+
+.oi-arrow-thick-left:before {
+ content'\e010'
+}
+
+.oi-arrow-thick-right:before {
+ content'\e011'
+}
+
+.oi-arrow-thick-top:before {
+ content'\e012'
+}
+
+.oi-arrow-top:before {
+ content'\e013'
+}
+
+.oi-audio-spectrum:before {
+ content'\e014'
+}
+
+.oi-audio:before {
+ content'\e015'
+}
+
+.oi-badge:before {
+ content'\e016'
+}
+
+.oi-ban:before {
+ content'\e017'
+}
+
+.oi-bar-chart:before {
+ content'\e018'
+}
+
+.oi-basket:before {
+ content'\e019'
+}
+
+.oi-battery-empty:before {
+ content'\e01a'
+}
+
+.oi-battery-full:before {
+ content'\e01b'
+}
+
+.oi-beaker:before {
+ content'\e01c'
+}
+
+.oi-bell:before {
+ content'\e01d'
+}
+
+.oi-bluetooth:before {
+ content'\e01e'
+}
+
+.oi-bold:before {
+ content'\e01f'
+}
+
+.oi-bolt:before {
+ content'\e020'
+}
+
+.oi-book:before {
+ content'\e021'
+}
+
+.oi-bookmark:before {
+ content'\e022'
+}
+
+.oi-box:before {
+ content'\e023'
+}
+
+.oi-briefcase:before {
+ content'\e024'
+}
+
+.oi-british-pound:before {
+ content'\e025'
+}
+
+.oi-browser:before {
+ content'\e026'
+}
+
+.oi-brush:before {
+ content'\e027'
+}
+
+.oi-bug:before {
+ content'\e028'
+}
+
+.oi-bullhorn:before {
+ content'\e029'
+}
+
+.oi-calculator:before {
+ content'\e02a'
+}
+
+.oi-calendar:before {
+ content'\e02b'
+}
+
+.oi-camera-slr:before {
+ content'\e02c'
+}
+
+.oi-caret-bottom:before {
+ content'\e02d'
+}
+
+.oi-caret-left:before {
+ content'\e02e'
+}
+
+.oi-caret-right:before {
+ content'\e02f'
+}
+
+.oi-caret-top:before {
+ content'\e030'
+}
+
+.oi-cart:before {
+ content'\e031'
+}
+
+.oi-chat:before {
+ content'\e032'
+}
+
+.oi-check:before {
+ content'\e033'
+}
+
+.oi-chevron-bottom:before {
+ content'\e034'
+}
+
+.oi-chevron-left:before {
+ content'\e035'
+}
+
+.oi-chevron-right:before {
+ content'\e036'
+}
+
+.oi-chevron-top:before {
+ content'\e037'
+}
+
+.oi-circle-check:before {
+ content'\e038'
+}
+
+.oi-circle-x:before {
+ content'\e039'
+}
+
+.oi-clipboard:before {
+ content'\e03a'
+}
+
+.oi-clock:before {
+ content'\e03b'
+}
+
+.oi-cloud-download:before {
+ content'\e03c'
+}
+
+.oi-cloud-upload:before {
+ content'\e03d'
+}
+
+.oi-cloud:before {
+ content'\e03e'
+}
+
+.oi-cloudy:before {
+ content'\e03f'
+}
+
+.oi-code:before {
+ content'\e040'
+}
+
+.oi-cog:before {
+ content'\e041'
+}
+
+.oi-collapse-down:before {
+ content'\e042'
+}
+
+.oi-collapse-left:before {
+ content'\e043'
+}
+
+.oi-collapse-right:before {
+ content'\e044'
+}
+
+.oi-collapse-up:before {
+ content'\e045'
+}
+
+.oi-command:before {
+ content'\e046'
+}
+
+.oi-comment-square:before {
+ content'\e047'
+}
+
+.oi-compass:before {
+ content'\e048'
+}
+
+.oi-contrast:before {
+ content'\e049'
+}
+
+.oi-copywriting:before {
+ content'\e04a'
+}
+
+.oi-credit-card:before {
+ content'\e04b'
+}
+
+.oi-crop:before {
+ content'\e04c'
+}
+
+.oi-dashboard:before {
+ content'\e04d'
+}
+
+.oi-data-transfer-download:before {
+ content'\e04e'
+}
+
+.oi-data-transfer-upload:before {
+ content'\e04f'
+}
+
+.oi-delete:before {
+ content'\e050'
+}
+
+.oi-dial:before {
+ content'\e051'
+}
+
+.oi-document:before {
+ content'\e052'
+}
+
+.oi-dollar:before {
+ content'\e053'
+}
+
+.oi-double-quote-sans-left:before {
+ content'\e054'
+}
+
+.oi-double-quote-sans-right:before {
+ content'\e055'
+}
+
+.oi-double-quote-serif-left:before {
+ content'\e056'
+}
+
+.oi-double-quote-serif-right:before {
+ content'\e057'
+}
+
+.oi-droplet:before {
+ content'\e058'
+}
+
+.oi-eject:before {
+ content'\e059'
+}
+
+.oi-elevator:before {
+ content'\e05a'
+}
+
+.oi-ellipses:before {
+ content'\e05b'
+}
+
+.oi-envelope-closed:before {
+ content'\e05c'
+}
+
+.oi-envelope-open:before {
+ content'\e05d'
+}
+
+.oi-euro:before {
+ content'\e05e'
+}
+
+.oi-excerpt:before {
+ content'\e05f'
+}
+
+.oi-expand-down:before {
+ content'\e060'
+}
+
+.oi-expand-left:before {
+ content'\e061'
+}
+
+.oi-expand-right:before {
+ content'\e062'
+}
+
+.oi-expand-up:before {
+ content'\e063'
+}
+
+.oi-external-link:before {
+ content'\e064'
+}
+
+.oi-eye:before {
+ content'\e065'
+}
+
+.oi-eyedropper:before {
+ content'\e066'
+}
+
+.oi-file:before {
+ content'\e067'
+}
+
+.oi-fire:before {
+ content'\e068'
+}
+
+.oi-flag:before {
+ content'\e069'
+}
+
+.oi-flash:before {
+ content'\e06a'
+}
+
+.oi-folder:before {
+ content'\e06b'
+}
+
+.oi-fork:before {
+ content'\e06c'
+}
+
+.oi-fullscreen-enter:before {
+ content'\e06d'
+}
+
+.oi-fullscreen-exit:before {
+ content'\e06e'
+}
+
+.oi-globe:before {
+ content'\e06f'
+}
+
+.oi-graph:before {
+ content'\e070'
+}
+
+.oi-grid-four-up:before {
+ content'\e071'
+}
+
+.oi-grid-three-up:before {
+ content'\e072'
+}
+
+.oi-grid-two-up:before {
+ content'\e073'
+}
+
+.oi-hard-drive:before {
+ content'\e074'
+}
+
+.oi-header:before {
+ content'\e075'
+}
+
+.oi-headphones:before {
+ content'\e076'
+}
+
+.oi-heart:before {
+ content'\e077'
+}
+
+.oi-home:before {
+ content'\e078'
+}
+
+.oi-image:before {
+ content'\e079'
+}
+
+.oi-inbox:before {
+ content'\e07a'
+}
+
+.oi-infinity:before {
+ content'\e07b'
+}
+
+.oi-info:before {
+ content'\e07c'
+}
+
+.oi-italic:before {
+ content'\e07d'
+}
+
+.oi-justify-center:before {
+ content'\e07e'
+}
+
+.oi-justify-left:before {
+ content'\e07f'
+}
+
+.oi-justify-right:before {
+ content'\e080'
+}
+
+.oi-key:before {
+ content'\e081'
+}
+
+.oi-laptop:before {
+ content'\e082'
+}
+
+.oi-layers:before {
+ content'\e083'
+}
+
+.oi-lightbulb:before {
+ content'\e084'
+}
+
+.oi-link-broken:before {
+ content'\e085'
+}
+
+.oi-link-intact:before {
+ content'\e086'
+}
+
+.oi-list-rich:before {
+ content'\e087'
+}
+
+.oi-list:before {
+ content'\e088'
+}
+
+.oi-location:before {
+ content'\e089'
+}
+
+.oi-lock-locked:before {
+ content'\e08a'
+}
+
+.oi-lock-unlocked:before {
+ content'\e08b'
+}
+
+.oi-loop-circular:before {
+ content'\e08c'
+}
+
+.oi-loop-square:before {
+ content'\e08d'
+}
+
+.oi-loop:before {
+ content'\e08e'
+}
+
+.oi-magnifying-glass:before {
+ content'\e08f'
+}
+
+.oi-map-marker:before {
+ content'\e090'
+}
+
+.oi-map:before {
+ content'\e091'
+}
+
+.oi-media-pause:before {
+ content'\e092'
+}
+
+.oi-media-play:before {
+ content'\e093'
+}
+
+.oi-media-record:before {
+ content'\e094'
+}
+
+.oi-media-skip-backward:before {
+ content'\e095'
+}
+
+.oi-media-skip-forward:before {
+ content'\e096'
+}
+
+.oi-media-step-backward:before {
+ content'\e097'
+}
+
+.oi-media-step-forward:before {
+ content'\e098'
+}
+
+.oi-media-stop:before {
+ content'\e099'
+}
+
+.oi-medical-cross:before {
+ content'\e09a'
+}
+
+.oi-menu:before {
+ content'\e09b'
+}
+
+.oi-microphone:before {
+ content'\e09c'
+}
+
+.oi-minus:before {
+ content'\e09d'
+}
+
+.oi-monitor:before {
+ content'\e09e'
+}
+
+.oi-moon:before {
+ content'\e09f'
+}
+
+.oi-move:before {
+ content'\e0a0'
+}
+
+.oi-musical-note:before {
+ content'\e0a1'
+}
+
+.oi-paperclip:before {
+ content'\e0a2'
+}
+
+.oi-pencil:before {
+ content'\e0a3'
+}
+
+.oi-people:before {
+ content'\e0a4'
+}
+
+.oi-person:before {
+ content'\e0a5'
+}
+
+.oi-phone:before {
+ content'\e0a6'
+}
+
+.oi-pie-chart:before {
+ content'\e0a7'
+}
+
+.oi-pin:before {
+ content'\e0a8'
+}
+
+.oi-play-circle:before {
+ content'\e0a9'
+}
+
+.oi-plus:before {
+ content'\e0aa'
+}
+
+.oi-power-standby:before {
+ content'\e0ab'
+}
+
+.oi-print:before {
+ content'\e0ac'
+}
+
+.oi-project:before {
+ content'\e0ad'
+}
+
+.oi-pulse:before {
+ content'\e0ae'
+}
+
+.oi-puzzle-piece:before {
+ content'\e0af'
+}
+
+.oi-question-mark:before {
+ content'\e0b0'
+}
+
+.oi-rain:before {
+ content'\e0b1'
+}
+
+.oi-random:before {
+ content'\e0b2'
+}
+
+.oi-reload:before {
+ content'\e0b3'
+}
+
+.oi-resize-both:before {
+ content'\e0b4'
+}
+
+.oi-resize-height:before {
+ content'\e0b5'
+}
+
+.oi-resize-width:before {
+ content'\e0b6'
+}
+
+.oi-rss-alt:before {
+ content'\e0b7'
+}
+
+.oi-rss:before {
+ content'\e0b8'
+}
+
+.oi-script:before {
+ content'\e0b9'
+}
+
+.oi-share-boxed:before {
+ content'\e0ba'
+}
+
+.oi-share:before {
+ content'\e0bb'
+}
+
+.oi-shield:before {
+ content'\e0bc'
+}
+
+.oi-signal:before {
+ content'\e0bd'
+}
+
+.oi-signpost:before {
+ content'\e0be'
+}
+
+.oi-sort-ascending:before {
+ content'\e0bf'
+}
+
+.oi-sort-descending:before {
+ content'\e0c0'
+}
+
+.oi-spreadsheet:before {
+ content'\e0c1'
+}
+
+.oi-star:before {
+ content'\e0c2'
+}
+
+.oi-sun:before {
+ content'\e0c3'
+}
+
+.oi-tablet:before {
+ content'\e0c4'
+}
+
+.oi-tag:before {
+ content'\e0c5'
+}
+
+.oi-tags:before {
+ content'\e0c6'
+}
+
+.oi-target:before {
+ content'\e0c7'
+}
+
+.oi-task:before {
+ content'\e0c8'
+}
+
+.oi-terminal:before {
+ content'\e0c9'
+}
+
+.oi-text:before {
+ content'\e0ca'
+}
+
+.oi-thumb-down:before {
+ content'\e0cb'
+}
+
+.oi-thumb-up:before {
+ content'\e0cc'
+}
+
+.oi-timer:before {
+ content'\e0cd'
+}
+
+.oi-transfer:before {
+ content'\e0ce'
+}
+
+.oi-trash:before {
+ content'\e0cf'
+}
+
+.oi-underline:before {
+ content'\e0d0'
+}
+
+.oi-vertical-align-bottom:before {
+ content'\e0d1'
+}
+
+.oi-vertical-align-center:before {
+ content'\e0d2'
+}
+
+.oi-vertical-align-top:before {
+ content'\e0d3'
+}
+
+.oi-video:before {
+ content'\e0d4'
+}
+
+.oi-volume-high:before {
+ content'\e0d5'
+}
+
+.oi-volume-low:before {
+ content'\e0d6'
+}
+
+.oi-volume-off:before {
+ content'\e0d7'
+}
+
+.oi-warning:before {
+ content'\e0d8'
+}
+
+.oi-wifi:before {
+ content'\e0d9'
+}
+
+.oi-wrench:before {
+ content'\e0da'
+}
+
+.oi-x:before {
+ content'\e0db'
+}
+
+.oi-yen:before {
+ content'\e0dc'
+}
+
+.oi-zoom-in:before {
+ content'\e0dd'
+}
+
+.oi-zoom-out:before {
+ content'\e0de'
+}
+
diff --git a/public/font/css/open-iconic-foundation.css b/public/font/css/open-iconic-foundation.css
new file mode 100644
index 0000000..905a821
--- /dev/null
+++ b/public/font/css/open-iconic-foundation.css
@@ -0,0 +1,1395 @@
+/* Foundation */
+
+@font-face {
+ font-family: 'Icons';
+ src: url('../fonts/open-iconic.eot');
+ src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+
+.fi-account-login:before,
+
+.fi-account-logout:before,
+
+.fi-action-redo:before,
+
+.fi-action-undo:before,
+
+.fi-align-center:before,
+
+.fi-align-left:before,
+
+.fi-align-right:before,
+
+.fi-aperture:before,
+
+.fi-arrow-bottom:before,
+
+.fi-arrow-circle-bottom:before,
+
+.fi-arrow-circle-left:before,
+
+.fi-arrow-circle-right:before,
+
+.fi-arrow-circle-top:before,
+
+.fi-arrow-left:before,
+
+.fi-arrow-right:before,
+
+.fi-arrow-thick-bottom:before,
+
+.fi-arrow-thick-left:before,
+
+.fi-arrow-thick-right:before,
+
+.fi-arrow-thick-top:before,
+
+.fi-arrow-top:before,
+
+.fi-audio-spectrum:before,
+
+.fi-audio:before,
+
+.fi-badge:before,
+
+.fi-ban:before,
+
+.fi-bar-chart:before,
+
+.fi-basket:before,
+
+.fi-battery-empty:before,
+
+.fi-battery-full:before,
+
+.fi-beaker:before,
+
+.fi-bell:before,
+
+.fi-bluetooth:before,
+
+.fi-bold:before,
+
+.fi-bolt:before,
+
+.fi-book:before,
+
+.fi-bookmark:before,
+
+.fi-box:before,
+
+.fi-briefcase:before,
+
+.fi-british-pound:before,
+
+.fi-browser:before,
+
+.fi-brush:before,
+
+.fi-bug:before,
+
+.fi-bullhorn:before,
+
+.fi-calculator:before,
+
+.fi-calendar:before,
+
+.fi-camera-slr:before,
+
+.fi-caret-bottom:before,
+
+.fi-caret-left:before,
+
+.fi-caret-right:before,
+
+.fi-caret-top:before,
+
+.fi-cart:before,
+
+.fi-chat:before,
+
+.fi-check:before,
+
+.fi-chevron-bottom:before,
+
+.fi-chevron-left:before,
+
+.fi-chevron-right:before,
+
+.fi-chevron-top:before,
+
+.fi-circle-check:before,
+
+.fi-circle-x:before,
+
+.fi-clipboard:before,
+
+.fi-clock:before,
+
+.fi-cloud-download:before,
+
+.fi-cloud-upload:before,
+
+.fi-cloud:before,
+
+.fi-cloudy:before,
+
+.fi-code:before,
+
+.fi-cog:before,
+
+.fi-collapse-down:before,
+
+.fi-collapse-left:before,
+
+.fi-collapse-right:before,
+
+.fi-collapse-up:before,
+
+.fi-command:before,
+
+.fi-comment-square:before,
+
+.fi-compass:before,
+
+.fi-contrast:before,
+
+.fi-copywriting:before,
+
+.fi-credit-card:before,
+
+.fi-crop:before,
+
+.fi-dashboard:before,
+
+.fi-data-transfer-download:before,
+
+.fi-data-transfer-upload:before,
+
+.fi-delete:before,
+
+.fi-dial:before,
+
+.fi-document:before,
+
+.fi-dollar:before,
+
+.fi-double-quote-sans-left:before,
+
+.fi-double-quote-sans-right:before,
+
+.fi-double-quote-serif-left:before,
+
+.fi-double-quote-serif-right:before,
+
+.fi-droplet:before,
+
+.fi-eject:before,
+
+.fi-elevator:before,
+
+.fi-ellipses:before,
+
+.fi-envelope-closed:before,
+
+.fi-envelope-open:before,
+
+.fi-euro:before,
+
+.fi-excerpt:before,
+
+.fi-expand-down:before,
+
+.fi-expand-left:before,
+
+.fi-expand-right:before,
+
+.fi-expand-up:before,
+
+.fi-external-link:before,
+
+.fi-eye:before,
+
+.fi-eyedropper:before,
+
+.fi-file:before,
+
+.fi-fire:before,
+
+.fi-flag:before,
+
+.fi-flash:before,
+
+.fi-folder:before,
+
+.fi-fork:before,
+
+.fi-fullscreen-enter:before,
+
+.fi-fullscreen-exit:before,
+
+.fi-globe:before,
+
+.fi-graph:before,
+
+.fi-grid-four-up:before,
+
+.fi-grid-three-up:before,
+
+.fi-grid-two-up:before,
+
+.fi-hard-drive:before,
+
+.fi-header:before,
+
+.fi-headphones:before,
+
+.fi-heart:before,
+
+.fi-home:before,
+
+.fi-image:before,
+
+.fi-inbox:before,
+
+.fi-infinity:before,
+
+.fi-info:before,
+
+.fi-italic:before,
+
+.fi-justify-center:before,
+
+.fi-justify-left:before,
+
+.fi-justify-right:before,
+
+.fi-key:before,
+
+.fi-laptop:before,
+
+.fi-layers:before,
+
+.fi-lightbulb:before,
+
+.fi-link-broken:before,
+
+.fi-link-intact:before,
+
+.fi-list-rich:before,
+
+.fi-list:before,
+
+.fi-location:before,
+
+.fi-lock-locked:before,
+
+.fi-lock-unlocked:before,
+
+.fi-loop-circular:before,
+
+.fi-loop-square:before,
+
+.fi-loop:before,
+
+.fi-magnifying-glass:before,
+
+.fi-map-marker:before,
+
+.fi-map:before,
+
+.fi-media-pause:before,
+
+.fi-media-play:before,
+
+.fi-media-record:before,
+
+.fi-media-skip-backward:before,
+
+.fi-media-skip-forward:before,
+
+.fi-media-step-backward:before,
+
+.fi-media-step-forward:before,
+
+.fi-media-stop:before,
+
+.fi-medical-cross:before,
+
+.fi-menu:before,
+
+.fi-microphone:before,
+
+.fi-minus:before,
+
+.fi-monitor:before,
+
+.fi-moon:before,
+
+.fi-move:before,
+
+.fi-musical-note:before,
+
+.fi-paperclip:before,
+
+.fi-pencil:before,
+
+.fi-people:before,
+
+.fi-person:before,
+
+.fi-phone:before,
+
+.fi-pie-chart:before,
+
+.fi-pin:before,
+
+.fi-play-circle:before,
+
+.fi-plus:before,
+
+.fi-power-standby:before,
+
+.fi-print:before,
+
+.fi-project:before,
+
+.fi-pulse:before,
+
+.fi-puzzle-piece:before,
+
+.fi-question-mark:before,
+
+.fi-rain:before,
+
+.fi-random:before,
+
+.fi-reload:before,
+
+.fi-resize-both:before,
+
+.fi-resize-height:before,
+
+.fi-resize-width:before,
+
+.fi-rss-alt:before,
+
+.fi-rss:before,
+
+.fi-script:before,
+
+.fi-share-boxed:before,
+
+.fi-share:before,
+
+.fi-shield:before,
+
+.fi-signal:before,
+
+.fi-signpost:before,
+
+.fi-sort-ascending:before,
+
+.fi-sort-descending:before,
+
+.fi-spreadsheet:before,
+
+.fi-star:before,
+
+.fi-sun:before,
+
+.fi-tablet:before,
+
+.fi-tag:before,
+
+.fi-tags:before,
+
+.fi-target:before,
+
+.fi-task:before,
+
+.fi-terminal:before,
+
+.fi-text:before,
+
+.fi-thumb-down:before,
+
+.fi-thumb-up:before,
+
+.fi-timer:before,
+
+.fi-transfer:before,
+
+.fi-trash:before,
+
+.fi-underline:before,
+
+.fi-vertical-align-bottom:before,
+
+.fi-vertical-align-center:before,
+
+.fi-vertical-align-top:before,
+
+.fi-video:before,
+
+.fi-volume-high:before,
+
+.fi-volume-low:before,
+
+.fi-volume-off:before,
+
+.fi-warning:before,
+
+.fi-wifi:before,
+
+.fi-wrench:before,
+
+.fi-x:before,
+
+.fi-yen:before,
+
+.fi-zoom-in:before,
+
+.fi-zoom-out:before
+ {
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ text-decoration: inherit;
+}
+
+
+[class*='fi-'].oi-align-center:before {
+ text-align: center;
+}
+
+[class*='fi-'].oi-align-left:before {
+ text-align: left;
+}
+
+[class*='fi-'].oi-align-right:before {
+ text-align: right;
+}
+
+
+[class*='fi-'].oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+
+[class*='fi-'].oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+}
+
+[class*='fi-'].oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+}
+
+
+
+.fi-account-login:before {
+ content:'\e000';
+}
+
+.fi-account-logout:before {
+ content:'\e001';
+}
+
+.fi-action-redo:before {
+ content:'\e002';
+}
+
+.fi-action-undo:before {
+ content:'\e003';
+}
+
+.fi-align-center:before {
+ content:'\e004';
+}
+
+.fi-align-left:before {
+ content:'\e005';
+}
+
+.fi-align-right:before {
+ content:'\e006';
+}
+
+.fi-aperture:before {
+ content:'\e007';
+}
+
+.fi-arrow-bottom:before {
+ content:'\e008';
+}
+
+.fi-arrow-circle-bottom:before {
+ content:'\e009';
+}
+
+.fi-arrow-circle-left:before {
+ content:'\e00a';
+}
+
+.fi-arrow-circle-right:before {
+ content:'\e00b';
+}
+
+.fi-arrow-circle-top:before {
+ content:'\e00c';
+}
+
+.fi-arrow-left:before {
+ content:'\e00d';
+}
+
+.fi-arrow-right:before {
+ content:'\e00e';
+}
+
+.fi-arrow-thick-bottom:before {
+ content:'\e00f';
+}
+
+.fi-arrow-thick-left:before {
+ content:'\e010';
+}
+
+.fi-arrow-thick-right:before {
+ content:'\e011';
+}
+
+.fi-arrow-thick-top:before {
+ content:'\e012';
+}
+
+.fi-arrow-top:before {
+ content:'\e013';
+}
+
+.fi-audio-spectrum:before {
+ content:'\e014';
+}
+
+.fi-audio:before {
+ content:'\e015';
+}
+
+.fi-badge:before {
+ content:'\e016';
+}
+
+.fi-ban:before {
+ content:'\e017';
+}
+
+.fi-bar-chart:before {
+ content:'\e018';
+}
+
+.fi-basket:before {
+ content:'\e019';
+}
+
+.fi-battery-empty:before {
+ content:'\e01a';
+}
+
+.fi-battery-full:before {
+ content:'\e01b';
+}
+
+.fi-beaker:before {
+ content:'\e01c';
+}
+
+.fi-bell:before {
+ content:'\e01d';
+}
+
+.fi-bluetooth:before {
+ content:'\e01e';
+}
+
+.fi-bold:before {
+ content:'\e01f';
+}
+
+.fi-bolt:before {
+ content:'\e020';
+}
+
+.fi-book:before {
+ content:'\e021';
+}
+
+.fi-bookmark:before {
+ content:'\e022';
+}
+
+.fi-box:before {
+ content:'\e023';
+}
+
+.fi-briefcase:before {
+ content:'\e024';
+}
+
+.fi-british-pound:before {
+ content:'\e025';
+}
+
+.fi-browser:before {
+ content:'\e026';
+}
+
+.fi-brush:before {
+ content:'\e027';
+}
+
+.fi-bug:before {
+ content:'\e028';
+}
+
+.fi-bullhorn:before {
+ content:'\e029';
+}
+
+.fi-calculator:before {
+ content:'\e02a';
+}
+
+.fi-calendar:before {
+ content:'\e02b';
+}
+
+.fi-camera-slr:before {
+ content:'\e02c';
+}
+
+.fi-caret-bottom:before {
+ content:'\e02d';
+}
+
+.fi-caret-left:before {
+ content:'\e02e';
+}
+
+.fi-caret-right:before {
+ content:'\e02f';
+}
+
+.fi-caret-top:before {
+ content:'\e030';
+}
+
+.fi-cart:before {
+ content:'\e031';
+}
+
+.fi-chat:before {
+ content:'\e032';
+}
+
+.fi-check:before {
+ content:'\e033';
+}
+
+.fi-chevron-bottom:before {
+ content:'\e034';
+}
+
+.fi-chevron-left:before {
+ content:'\e035';
+}
+
+.fi-chevron-right:before {
+ content:'\e036';
+}
+
+.fi-chevron-top:before {
+ content:'\e037';
+}
+
+.fi-circle-check:before {
+ content:'\e038';
+}
+
+.fi-circle-x:before {
+ content:'\e039';
+}
+
+.fi-clipboard:before {
+ content:'\e03a';
+}
+
+.fi-clock:before {
+ content:'\e03b';
+}
+
+.fi-cloud-download:before {
+ content:'\e03c';
+}
+
+.fi-cloud-upload:before {
+ content:'\e03d';
+}
+
+.fi-cloud:before {
+ content:'\e03e';
+}
+
+.fi-cloudy:before {
+ content:'\e03f';
+}
+
+.fi-code:before {
+ content:'\e040';
+}
+
+.fi-cog:before {
+ content:'\e041';
+}
+
+.fi-collapse-down:before {
+ content:'\e042';
+}
+
+.fi-collapse-left:before {
+ content:'\e043';
+}
+
+.fi-collapse-right:before {
+ content:'\e044';
+}
+
+.fi-collapse-up:before {
+ content:'\e045';
+}
+
+.fi-command:before {
+ content:'\e046';
+}
+
+.fi-comment-square:before {
+ content:'\e047';
+}
+
+.fi-compass:before {
+ content:'\e048';
+}
+
+.fi-contrast:before {
+ content:'\e049';
+}
+
+.fi-copywriting:before {
+ content:'\e04a';
+}
+
+.fi-credit-card:before {
+ content:'\e04b';
+}
+
+.fi-crop:before {
+ content:'\e04c';
+}
+
+.fi-dashboard:before {
+ content:'\e04d';
+}
+
+.fi-data-transfer-download:before {
+ content:'\e04e';
+}
+
+.fi-data-transfer-upload:before {
+ content:'\e04f';
+}
+
+.fi-delete:before {
+ content:'\e050';
+}
+
+.fi-dial:before {
+ content:'\e051';
+}
+
+.fi-document:before {
+ content:'\e052';
+}
+
+.fi-dollar:before {
+ content:'\e053';
+}
+
+.fi-double-quote-sans-left:before {
+ content:'\e054';
+}
+
+.fi-double-quote-sans-right:before {
+ content:'\e055';
+}
+
+.fi-double-quote-serif-left:before {
+ content:'\e056';
+}
+
+.fi-double-quote-serif-right:before {
+ content:'\e057';
+}
+
+.fi-droplet:before {
+ content:'\e058';
+}
+
+.fi-eject:before {
+ content:'\e059';
+}
+
+.fi-elevator:before {
+ content:'\e05a';
+}
+
+.fi-ellipses:before {
+ content:'\e05b';
+}
+
+.fi-envelope-closed:before {
+ content:'\e05c';
+}
+
+.fi-envelope-open:before {
+ content:'\e05d';
+}
+
+.fi-euro:before {
+ content:'\e05e';
+}
+
+.fi-excerpt:before {
+ content:'\e05f';
+}
+
+.fi-expand-down:before {
+ content:'\e060';
+}
+
+.fi-expand-left:before {
+ content:'\e061';
+}
+
+.fi-expand-right:before {
+ content:'\e062';
+}
+
+.fi-expand-up:before {
+ content:'\e063';
+}
+
+.fi-external-link:before {
+ content:'\e064';
+}
+
+.fi-eye:before {
+ content:'\e065';
+}
+
+.fi-eyedropper:before {
+ content:'\e066';
+}
+
+.fi-file:before {
+ content:'\e067';
+}
+
+.fi-fire:before {
+ content:'\e068';
+}
+
+.fi-flag:before {
+ content:'\e069';
+}
+
+.fi-flash:before {
+ content:'\e06a';
+}
+
+.fi-folder:before {
+ content:'\e06b';
+}
+
+.fi-fork:before {
+ content:'\e06c';
+}
+
+.fi-fullscreen-enter:before {
+ content:'\e06d';
+}
+
+.fi-fullscreen-exit:before {
+ content:'\e06e';
+}
+
+.fi-globe:before {
+ content:'\e06f';
+}
+
+.fi-graph:before {
+ content:'\e070';
+}
+
+.fi-grid-four-up:before {
+ content:'\e071';
+}
+
+.fi-grid-three-up:before {
+ content:'\e072';
+}
+
+.fi-grid-two-up:before {
+ content:'\e073';
+}
+
+.fi-hard-drive:before {
+ content:'\e074';
+}
+
+.fi-header:before {
+ content:'\e075';
+}
+
+.fi-headphones:before {
+ content:'\e076';
+}
+
+.fi-heart:before {
+ content:'\e077';
+}
+
+.fi-home:before {
+ content:'\e078';
+}
+
+.fi-image:before {
+ content:'\e079';
+}
+
+.fi-inbox:before {
+ content:'\e07a';
+}
+
+.fi-infinity:before {
+ content:'\e07b';
+}
+
+.fi-info:before {
+ content:'\e07c';
+}
+
+.fi-italic:before {
+ content:'\e07d';
+}
+
+.fi-justify-center:before {
+ content:'\e07e';
+}
+
+.fi-justify-left:before {
+ content:'\e07f';
+}
+
+.fi-justify-right:before {
+ content:'\e080';
+}
+
+.fi-key:before {
+ content:'\e081';
+}
+
+.fi-laptop:before {
+ content:'\e082';
+}
+
+.fi-layers:before {
+ content:'\e083';
+}
+
+.fi-lightbulb:before {
+ content:'\e084';
+}
+
+.fi-link-broken:before {
+ content:'\e085';
+}
+
+.fi-link-intact:before {
+ content:'\e086';
+}
+
+.fi-list-rich:before {
+ content:'\e087';
+}
+
+.fi-list:before {
+ content:'\e088';
+}
+
+.fi-location:before {
+ content:'\e089';
+}
+
+.fi-lock-locked:before {
+ content:'\e08a';
+}
+
+.fi-lock-unlocked:before {
+ content:'\e08b';
+}
+
+.fi-loop-circular:before {
+ content:'\e08c';
+}
+
+.fi-loop-square:before {
+ content:'\e08d';
+}
+
+.fi-loop:before {
+ content:'\e08e';
+}
+
+.fi-magnifying-glass:before {
+ content:'\e08f';
+}
+
+.fi-map-marker:before {
+ content:'\e090';
+}
+
+.fi-map:before {
+ content:'\e091';
+}
+
+.fi-media-pause:before {
+ content:'\e092';
+}
+
+.fi-media-play:before {
+ content:'\e093';
+}
+
+.fi-media-record:before {
+ content:'\e094';
+}
+
+.fi-media-skip-backward:before {
+ content:'\e095';
+}
+
+.fi-media-skip-forward:before {
+ content:'\e096';
+}
+
+.fi-media-step-backward:before {
+ content:'\e097';
+}
+
+.fi-media-step-forward:before {
+ content:'\e098';
+}
+
+.fi-media-stop:before {
+ content:'\e099';
+}
+
+.fi-medical-cross:before {
+ content:'\e09a';
+}
+
+.fi-menu:before {
+ content:'\e09b';
+}
+
+.fi-microphone:before {
+ content:'\e09c';
+}
+
+.fi-minus:before {
+ content:'\e09d';
+}
+
+.fi-monitor:before {
+ content:'\e09e';
+}
+
+.fi-moon:before {
+ content:'\e09f';
+}
+
+.fi-move:before {
+ content:'\e0a0';
+}
+
+.fi-musical-note:before {
+ content:'\e0a1';
+}
+
+.fi-paperclip:before {
+ content:'\e0a2';
+}
+
+.fi-pencil:before {
+ content:'\e0a3';
+}
+
+.fi-people:before {
+ content:'\e0a4';
+}
+
+.fi-person:before {
+ content:'\e0a5';
+}
+
+.fi-phone:before {
+ content:'\e0a6';
+}
+
+.fi-pie-chart:before {
+ content:'\e0a7';
+}
+
+.fi-pin:before {
+ content:'\e0a8';
+}
+
+.fi-play-circle:before {
+ content:'\e0a9';
+}
+
+.fi-plus:before {
+ content:'\e0aa';
+}
+
+.fi-power-standby:before {
+ content:'\e0ab';
+}
+
+.fi-print:before {
+ content:'\e0ac';
+}
+
+.fi-project:before {
+ content:'\e0ad';
+}
+
+.fi-pulse:before {
+ content:'\e0ae';
+}
+
+.fi-puzzle-piece:before {
+ content:'\e0af';
+}
+
+.fi-question-mark:before {
+ content:'\e0b0';
+}
+
+.fi-rain:before {
+ content:'\e0b1';
+}
+
+.fi-random:before {
+ content:'\e0b2';
+}
+
+.fi-reload:before {
+ content:'\e0b3';
+}
+
+.fi-resize-both:before {
+ content:'\e0b4';
+}
+
+.fi-resize-height:before {
+ content:'\e0b5';
+}
+
+.fi-resize-width:before {
+ content:'\e0b6';
+}
+
+.fi-rss-alt:before {
+ content:'\e0b7';
+}
+
+.fi-rss:before {
+ content:'\e0b8';
+}
+
+.fi-script:before {
+ content:'\e0b9';
+}
+
+.fi-share-boxed:before {
+ content:'\e0ba';
+}
+
+.fi-share:before {
+ content:'\e0bb';
+}
+
+.fi-shield:before {
+ content:'\e0bc';
+}
+
+.fi-signal:before {
+ content:'\e0bd';
+}
+
+.fi-signpost:before {
+ content:'\e0be';
+}
+
+.fi-sort-ascending:before {
+ content:'\e0bf';
+}
+
+.fi-sort-descending:before {
+ content:'\e0c0';
+}
+
+.fi-spreadsheet:before {
+ content:'\e0c1';
+}
+
+.fi-star:before {
+ content:'\e0c2';
+}
+
+.fi-sun:before {
+ content:'\e0c3';
+}
+
+.fi-tablet:before {
+ content:'\e0c4';
+}
+
+.fi-tag:before {
+ content:'\e0c5';
+}
+
+.fi-tags:before {
+ content:'\e0c6';
+}
+
+.fi-target:before {
+ content:'\e0c7';
+}
+
+.fi-task:before {
+ content:'\e0c8';
+}
+
+.fi-terminal:before {
+ content:'\e0c9';
+}
+
+.fi-text:before {
+ content:'\e0ca';
+}
+
+.fi-thumb-down:before {
+ content:'\e0cb';
+}
+
+.fi-thumb-up:before {
+ content:'\e0cc';
+}
+
+.fi-timer:before {
+ content:'\e0cd';
+}
+
+.fi-transfer:before {
+ content:'\e0ce';
+}
+
+.fi-trash:before {
+ content:'\e0cf';
+}
+
+.fi-underline:before {
+ content:'\e0d0';
+}
+
+.fi-vertical-align-bottom:before {
+ content:'\e0d1';
+}
+
+.fi-vertical-align-center:before {
+ content:'\e0d2';
+}
+
+.fi-vertical-align-top:before {
+ content:'\e0d3';
+}
+
+.fi-video:before {
+ content:'\e0d4';
+}
+
+.fi-volume-high:before {
+ content:'\e0d5';
+}
+
+.fi-volume-low:before {
+ content:'\e0d6';
+}
+
+.fi-volume-off:before {
+ content:'\e0d7';
+}
+
+.fi-warning:before {
+ content:'\e0d8';
+}
+
+.fi-wifi:before {
+ content:'\e0d9';
+}
+
+.fi-wrench:before {
+ content:'\e0da';
+}
+
+.fi-x:before {
+ content:'\e0db';
+}
+
+.fi-yen:before {
+ content:'\e0dc';
+}
+
+.fi-zoom-in:before {
+ content:'\e0dd';
+}
+
+.fi-zoom-out:before {
+ content:'\e0de';
+}
+
diff --git a/public/font/css/open-iconic-foundation.less b/public/font/css/open-iconic-foundation.less
new file mode 100644
index 0000000..deabf26
--- /dev/null
+++ b/public/font/css/open-iconic-foundation.less
@@ -0,0 +1,1397 @@
+/* Foundation */
+
+/* Font path variable */
+@icon-font-path: '../fonts/';
+
+@font-face {
+ font-family: 'Icons';
+ src: url('@{icon-font-path}open-iconic.eot');
+ src: url('@{icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{icon-font-path}open-iconic.woff') format('woff'), url('@{icon-font-path}open-iconic.ttf') format('truetype'), url('@{icon-font-path}open-iconic.otf') format('opentype'), url('@{icon-font-path}open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+
+.fi-account-login:before,
+
+.fi-account-logout:before,
+
+.fi-action-redo:before,
+
+.fi-action-undo:before,
+
+.fi-align-center:before,
+
+.fi-align-left:before,
+
+.fi-align-right:before,
+
+.fi-aperture:before,
+
+.fi-arrow-bottom:before,
+
+.fi-arrow-circle-bottom:before,
+
+.fi-arrow-circle-left:before,
+
+.fi-arrow-circle-right:before,
+
+.fi-arrow-circle-top:before,
+
+.fi-arrow-left:before,
+
+.fi-arrow-right:before,
+
+.fi-arrow-thick-bottom:before,
+
+.fi-arrow-thick-left:before,
+
+.fi-arrow-thick-right:before,
+
+.fi-arrow-thick-top:before,
+
+.fi-arrow-top:before,
+
+.fi-audio-spectrum:before,
+
+.fi-audio:before,
+
+.fi-badge:before,
+
+.fi-ban:before,
+
+.fi-bar-chart:before,
+
+.fi-basket:before,
+
+.fi-battery-empty:before,
+
+.fi-battery-full:before,
+
+.fi-beaker:before,
+
+.fi-bell:before,
+
+.fi-bluetooth:before,
+
+.fi-bold:before,
+
+.fi-bolt:before,
+
+.fi-book:before,
+
+.fi-bookmark:before,
+
+.fi-box:before,
+
+.fi-briefcase:before,
+
+.fi-british-pound:before,
+
+.fi-browser:before,
+
+.fi-brush:before,
+
+.fi-bug:before,
+
+.fi-bullhorn:before,
+
+.fi-calculator:before,
+
+.fi-calendar:before,
+
+.fi-camera-slr:before,
+
+.fi-caret-bottom:before,
+
+.fi-caret-left:before,
+
+.fi-caret-right:before,
+
+.fi-caret-top:before,
+
+.fi-cart:before,
+
+.fi-chat:before,
+
+.fi-check:before,
+
+.fi-chevron-bottom:before,
+
+.fi-chevron-left:before,
+
+.fi-chevron-right:before,
+
+.fi-chevron-top:before,
+
+.fi-circle-check:before,
+
+.fi-circle-x:before,
+
+.fi-clipboard:before,
+
+.fi-clock:before,
+
+.fi-cloud-download:before,
+
+.fi-cloud-upload:before,
+
+.fi-cloud:before,
+
+.fi-cloudy:before,
+
+.fi-code:before,
+
+.fi-cog:before,
+
+.fi-collapse-down:before,
+
+.fi-collapse-left:before,
+
+.fi-collapse-right:before,
+
+.fi-collapse-up:before,
+
+.fi-command:before,
+
+.fi-comment-square:before,
+
+.fi-compass:before,
+
+.fi-contrast:before,
+
+.fi-copywriting:before,
+
+.fi-credit-card:before,
+
+.fi-crop:before,
+
+.fi-dashboard:before,
+
+.fi-data-transfer-download:before,
+
+.fi-data-transfer-upload:before,
+
+.fi-delete:before,
+
+.fi-dial:before,
+
+.fi-document:before,
+
+.fi-dollar:before,
+
+.fi-double-quote-sans-left:before,
+
+.fi-double-quote-sans-right:before,
+
+.fi-double-quote-serif-left:before,
+
+.fi-double-quote-serif-right:before,
+
+.fi-droplet:before,
+
+.fi-eject:before,
+
+.fi-elevator:before,
+
+.fi-ellipses:before,
+
+.fi-envelope-closed:before,
+
+.fi-envelope-open:before,
+
+.fi-euro:before,
+
+.fi-excerpt:before,
+
+.fi-expand-down:before,
+
+.fi-expand-left:before,
+
+.fi-expand-right:before,
+
+.fi-expand-up:before,
+
+.fi-external-link:before,
+
+.fi-eye:before,
+
+.fi-eyedropper:before,
+
+.fi-file:before,
+
+.fi-fire:before,
+
+.fi-flag:before,
+
+.fi-flash:before,
+
+.fi-folder:before,
+
+.fi-fork:before,
+
+.fi-fullscreen-enter:before,
+
+.fi-fullscreen-exit:before,
+
+.fi-globe:before,
+
+.fi-graph:before,
+
+.fi-grid-four-up:before,
+
+.fi-grid-three-up:before,
+
+.fi-grid-two-up:before,
+
+.fi-hard-drive:before,
+
+.fi-header:before,
+
+.fi-headphones:before,
+
+.fi-heart:before,
+
+.fi-home:before,
+
+.fi-image:before,
+
+.fi-inbox:before,
+
+.fi-infinity:before,
+
+.fi-info:before,
+
+.fi-italic:before,
+
+.fi-justify-center:before,
+
+.fi-justify-left:before,
+
+.fi-justify-right:before,
+
+.fi-key:before,
+
+.fi-laptop:before,
+
+.fi-layers:before,
+
+.fi-lightbulb:before,
+
+.fi-link-broken:before,
+
+.fi-link-intact:before,
+
+.fi-list-rich:before,
+
+.fi-list:before,
+
+.fi-location:before,
+
+.fi-lock-locked:before,
+
+.fi-lock-unlocked:before,
+
+.fi-loop-circular:before,
+
+.fi-loop-square:before,
+
+.fi-loop:before,
+
+.fi-magnifying-glass:before,
+
+.fi-map-marker:before,
+
+.fi-map:before,
+
+.fi-media-pause:before,
+
+.fi-media-play:before,
+
+.fi-media-record:before,
+
+.fi-media-skip-backward:before,
+
+.fi-media-skip-forward:before,
+
+.fi-media-step-backward:before,
+
+.fi-media-step-forward:before,
+
+.fi-media-stop:before,
+
+.fi-medical-cross:before,
+
+.fi-menu:before,
+
+.fi-microphone:before,
+
+.fi-minus:before,
+
+.fi-monitor:before,
+
+.fi-moon:before,
+
+.fi-move:before,
+
+.fi-musical-note:before,
+
+.fi-paperclip:before,
+
+.fi-pencil:before,
+
+.fi-people:before,
+
+.fi-person:before,
+
+.fi-phone:before,
+
+.fi-pie-chart:before,
+
+.fi-pin:before,
+
+.fi-play-circle:before,
+
+.fi-plus:before,
+
+.fi-power-standby:before,
+
+.fi-print:before,
+
+.fi-project:before,
+
+.fi-pulse:before,
+
+.fi-puzzle-piece:before,
+
+.fi-question-mark:before,
+
+.fi-rain:before,
+
+.fi-random:before,
+
+.fi-reload:before,
+
+.fi-resize-both:before,
+
+.fi-resize-height:before,
+
+.fi-resize-width:before,
+
+.fi-rss-alt:before,
+
+.fi-rss:before,
+
+.fi-script:before,
+
+.fi-share-boxed:before,
+
+.fi-share:before,
+
+.fi-shield:before,
+
+.fi-signal:before,
+
+.fi-signpost:before,
+
+.fi-sort-ascending:before,
+
+.fi-sort-descending:before,
+
+.fi-spreadsheet:before,
+
+.fi-star:before,
+
+.fi-sun:before,
+
+.fi-tablet:before,
+
+.fi-tag:before,
+
+.fi-tags:before,
+
+.fi-target:before,
+
+.fi-task:before,
+
+.fi-terminal:before,
+
+.fi-text:before,
+
+.fi-thumb-down:before,
+
+.fi-thumb-up:before,
+
+.fi-timer:before,
+
+.fi-transfer:before,
+
+.fi-trash:before,
+
+.fi-underline:before,
+
+.fi-vertical-align-bottom:before,
+
+.fi-vertical-align-center:before,
+
+.fi-vertical-align-top:before,
+
+.fi-video:before,
+
+.fi-volume-high:before,
+
+.fi-volume-low:before,
+
+.fi-volume-off:before,
+
+.fi-warning:before,
+
+.fi-wifi:before,
+
+.fi-wrench:before,
+
+.fi-x:before,
+
+.fi-yen:before,
+
+.fi-zoom-in:before,
+
+.fi-zoom-out:before
+ {
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ text-decoration: inherit;
+}
+
+[class*='fi-'].oi-align-center:before {
+ text-align: center;
+}
+
+[class*='fi-'].oi-align-left:before {
+ text-align: left;
+}
+
+[class*='fi-'].oi-align-right:before {
+ text-align: right;
+}
+
+
+[class*='fi-'].oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+
+[class*='fi-'].oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+}
+
+[class*='fi-'].oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+}
+
+
+
+.fi-account-login:before {
+ content:'\e000';
+}
+
+.fi-account-logout:before {
+ content:'\e001';
+}
+
+.fi-action-redo:before {
+ content:'\e002';
+}
+
+.fi-action-undo:before {
+ content:'\e003';
+}
+
+.fi-align-center:before {
+ content:'\e004';
+}
+
+.fi-align-left:before {
+ content:'\e005';
+}
+
+.fi-align-right:before {
+ content:'\e006';
+}
+
+.fi-aperture:before {
+ content:'\e007';
+}
+
+.fi-arrow-bottom:before {
+ content:'\e008';
+}
+
+.fi-arrow-circle-bottom:before {
+ content:'\e009';
+}
+
+.fi-arrow-circle-left:before {
+ content:'\e00a';
+}
+
+.fi-arrow-circle-right:before {
+ content:'\e00b';
+}
+
+.fi-arrow-circle-top:before {
+ content:'\e00c';
+}
+
+.fi-arrow-left:before {
+ content:'\e00d';
+}
+
+.fi-arrow-right:before {
+ content:'\e00e';
+}
+
+.fi-arrow-thick-bottom:before {
+ content:'\e00f';
+}
+
+.fi-arrow-thick-left:before {
+ content:'\e010';
+}
+
+.fi-arrow-thick-right:before {
+ content:'\e011';
+}
+
+.fi-arrow-thick-top:before {
+ content:'\e012';
+}
+
+.fi-arrow-top:before {
+ content:'\e013';
+}
+
+.fi-audio-spectrum:before {
+ content:'\e014';
+}
+
+.fi-audio:before {
+ content:'\e015';
+}
+
+.fi-badge:before {
+ content:'\e016';
+}
+
+.fi-ban:before {
+ content:'\e017';
+}
+
+.fi-bar-chart:before {
+ content:'\e018';
+}
+
+.fi-basket:before {
+ content:'\e019';
+}
+
+.fi-battery-empty:before {
+ content:'\e01a';
+}
+
+.fi-battery-full:before {
+ content:'\e01b';
+}
+
+.fi-beaker:before {
+ content:'\e01c';
+}
+
+.fi-bell:before {
+ content:'\e01d';
+}
+
+.fi-bluetooth:before {
+ content:'\e01e';
+}
+
+.fi-bold:before {
+ content:'\e01f';
+}
+
+.fi-bolt:before {
+ content:'\e020';
+}
+
+.fi-book:before {
+ content:'\e021';
+}
+
+.fi-bookmark:before {
+ content:'\e022';
+}
+
+.fi-box:before {
+ content:'\e023';
+}
+
+.fi-briefcase:before {
+ content:'\e024';
+}
+
+.fi-british-pound:before {
+ content:'\e025';
+}
+
+.fi-browser:before {
+ content:'\e026';
+}
+
+.fi-brush:before {
+ content:'\e027';
+}
+
+.fi-bug:before {
+ content:'\e028';
+}
+
+.fi-bullhorn:before {
+ content:'\e029';
+}
+
+.fi-calculator:before {
+ content:'\e02a';
+}
+
+.fi-calendar:before {
+ content:'\e02b';
+}
+
+.fi-camera-slr:before {
+ content:'\e02c';
+}
+
+.fi-caret-bottom:before {
+ content:'\e02d';
+}
+
+.fi-caret-left:before {
+ content:'\e02e';
+}
+
+.fi-caret-right:before {
+ content:'\e02f';
+}
+
+.fi-caret-top:before {
+ content:'\e030';
+}
+
+.fi-cart:before {
+ content:'\e031';
+}
+
+.fi-chat:before {
+ content:'\e032';
+}
+
+.fi-check:before {
+ content:'\e033';
+}
+
+.fi-chevron-bottom:before {
+ content:'\e034';
+}
+
+.fi-chevron-left:before {
+ content:'\e035';
+}
+
+.fi-chevron-right:before {
+ content:'\e036';
+}
+
+.fi-chevron-top:before {
+ content:'\e037';
+}
+
+.fi-circle-check:before {
+ content:'\e038';
+}
+
+.fi-circle-x:before {
+ content:'\e039';
+}
+
+.fi-clipboard:before {
+ content:'\e03a';
+}
+
+.fi-clock:before {
+ content:'\e03b';
+}
+
+.fi-cloud-download:before {
+ content:'\e03c';
+}
+
+.fi-cloud-upload:before {
+ content:'\e03d';
+}
+
+.fi-cloud:before {
+ content:'\e03e';
+}
+
+.fi-cloudy:before {
+ content:'\e03f';
+}
+
+.fi-code:before {
+ content:'\e040';
+}
+
+.fi-cog:before {
+ content:'\e041';
+}
+
+.fi-collapse-down:before {
+ content:'\e042';
+}
+
+.fi-collapse-left:before {
+ content:'\e043';
+}
+
+.fi-collapse-right:before {
+ content:'\e044';
+}
+
+.fi-collapse-up:before {
+ content:'\e045';
+}
+
+.fi-command:before {
+ content:'\e046';
+}
+
+.fi-comment-square:before {
+ content:'\e047';
+}
+
+.fi-compass:before {
+ content:'\e048';
+}
+
+.fi-contrast:before {
+ content:'\e049';
+}
+
+.fi-copywriting:before {
+ content:'\e04a';
+}
+
+.fi-credit-card:before {
+ content:'\e04b';
+}
+
+.fi-crop:before {
+ content:'\e04c';
+}
+
+.fi-dashboard:before {
+ content:'\e04d';
+}
+
+.fi-data-transfer-download:before {
+ content:'\e04e';
+}
+
+.fi-data-transfer-upload:before {
+ content:'\e04f';
+}
+
+.fi-delete:before {
+ content:'\e050';
+}
+
+.fi-dial:before {
+ content:'\e051';
+}
+
+.fi-document:before {
+ content:'\e052';
+}
+
+.fi-dollar:before {
+ content:'\e053';
+}
+
+.fi-double-quote-sans-left:before {
+ content:'\e054';
+}
+
+.fi-double-quote-sans-right:before {
+ content:'\e055';
+}
+
+.fi-double-quote-serif-left:before {
+ content:'\e056';
+}
+
+.fi-double-quote-serif-right:before {
+ content:'\e057';
+}
+
+.fi-droplet:before {
+ content:'\e058';
+}
+
+.fi-eject:before {
+ content:'\e059';
+}
+
+.fi-elevator:before {
+ content:'\e05a';
+}
+
+.fi-ellipses:before {
+ content:'\e05b';
+}
+
+.fi-envelope-closed:before {
+ content:'\e05c';
+}
+
+.fi-envelope-open:before {
+ content:'\e05d';
+}
+
+.fi-euro:before {
+ content:'\e05e';
+}
+
+.fi-excerpt:before {
+ content:'\e05f';
+}
+
+.fi-expand-down:before {
+ content:'\e060';
+}
+
+.fi-expand-left:before {
+ content:'\e061';
+}
+
+.fi-expand-right:before {
+ content:'\e062';
+}
+
+.fi-expand-up:before {
+ content:'\e063';
+}
+
+.fi-external-link:before {
+ content:'\e064';
+}
+
+.fi-eye:before {
+ content:'\e065';
+}
+
+.fi-eyedropper:before {
+ content:'\e066';
+}
+
+.fi-file:before {
+ content:'\e067';
+}
+
+.fi-fire:before {
+ content:'\e068';
+}
+
+.fi-flag:before {
+ content:'\e069';
+}
+
+.fi-flash:before {
+ content:'\e06a';
+}
+
+.fi-folder:before {
+ content:'\e06b';
+}
+
+.fi-fork:before {
+ content:'\e06c';
+}
+
+.fi-fullscreen-enter:before {
+ content:'\e06d';
+}
+
+.fi-fullscreen-exit:before {
+ content:'\e06e';
+}
+
+.fi-globe:before {
+ content:'\e06f';
+}
+
+.fi-graph:before {
+ content:'\e070';
+}
+
+.fi-grid-four-up:before {
+ content:'\e071';
+}
+
+.fi-grid-three-up:before {
+ content:'\e072';
+}
+
+.fi-grid-two-up:before {
+ content:'\e073';
+}
+
+.fi-hard-drive:before {
+ content:'\e074';
+}
+
+.fi-header:before {
+ content:'\e075';
+}
+
+.fi-headphones:before {
+ content:'\e076';
+}
+
+.fi-heart:before {
+ content:'\e077';
+}
+
+.fi-home:before {
+ content:'\e078';
+}
+
+.fi-image:before {
+ content:'\e079';
+}
+
+.fi-inbox:before {
+ content:'\e07a';
+}
+
+.fi-infinity:before {
+ content:'\e07b';
+}
+
+.fi-info:before {
+ content:'\e07c';
+}
+
+.fi-italic:before {
+ content:'\e07d';
+}
+
+.fi-justify-center:before {
+ content:'\e07e';
+}
+
+.fi-justify-left:before {
+ content:'\e07f';
+}
+
+.fi-justify-right:before {
+ content:'\e080';
+}
+
+.fi-key:before {
+ content:'\e081';
+}
+
+.fi-laptop:before {
+ content:'\e082';
+}
+
+.fi-layers:before {
+ content:'\e083';
+}
+
+.fi-lightbulb:before {
+ content:'\e084';
+}
+
+.fi-link-broken:before {
+ content:'\e085';
+}
+
+.fi-link-intact:before {
+ content:'\e086';
+}
+
+.fi-list-rich:before {
+ content:'\e087';
+}
+
+.fi-list:before {
+ content:'\e088';
+}
+
+.fi-location:before {
+ content:'\e089';
+}
+
+.fi-lock-locked:before {
+ content:'\e08a';
+}
+
+.fi-lock-unlocked:before {
+ content:'\e08b';
+}
+
+.fi-loop-circular:before {
+ content:'\e08c';
+}
+
+.fi-loop-square:before {
+ content:'\e08d';
+}
+
+.fi-loop:before {
+ content:'\e08e';
+}
+
+.fi-magnifying-glass:before {
+ content:'\e08f';
+}
+
+.fi-map-marker:before {
+ content:'\e090';
+}
+
+.fi-map:before {
+ content:'\e091';
+}
+
+.fi-media-pause:before {
+ content:'\e092';
+}
+
+.fi-media-play:before {
+ content:'\e093';
+}
+
+.fi-media-record:before {
+ content:'\e094';
+}
+
+.fi-media-skip-backward:before {
+ content:'\e095';
+}
+
+.fi-media-skip-forward:before {
+ content:'\e096';
+}
+
+.fi-media-step-backward:before {
+ content:'\e097';
+}
+
+.fi-media-step-forward:before {
+ content:'\e098';
+}
+
+.fi-media-stop:before {
+ content:'\e099';
+}
+
+.fi-medical-cross:before {
+ content:'\e09a';
+}
+
+.fi-menu:before {
+ content:'\e09b';
+}
+
+.fi-microphone:before {
+ content:'\e09c';
+}
+
+.fi-minus:before {
+ content:'\e09d';
+}
+
+.fi-monitor:before {
+ content:'\e09e';
+}
+
+.fi-moon:before {
+ content:'\e09f';
+}
+
+.fi-move:before {
+ content:'\e0a0';
+}
+
+.fi-musical-note:before {
+ content:'\e0a1';
+}
+
+.fi-paperclip:before {
+ content:'\e0a2';
+}
+
+.fi-pencil:before {
+ content:'\e0a3';
+}
+
+.fi-people:before {
+ content:'\e0a4';
+}
+
+.fi-person:before {
+ content:'\e0a5';
+}
+
+.fi-phone:before {
+ content:'\e0a6';
+}
+
+.fi-pie-chart:before {
+ content:'\e0a7';
+}
+
+.fi-pin:before {
+ content:'\e0a8';
+}
+
+.fi-play-circle:before {
+ content:'\e0a9';
+}
+
+.fi-plus:before {
+ content:'\e0aa';
+}
+
+.fi-power-standby:before {
+ content:'\e0ab';
+}
+
+.fi-print:before {
+ content:'\e0ac';
+}
+
+.fi-project:before {
+ content:'\e0ad';
+}
+
+.fi-pulse:before {
+ content:'\e0ae';
+}
+
+.fi-puzzle-piece:before {
+ content:'\e0af';
+}
+
+.fi-question-mark:before {
+ content:'\e0b0';
+}
+
+.fi-rain:before {
+ content:'\e0b1';
+}
+
+.fi-random:before {
+ content:'\e0b2';
+}
+
+.fi-reload:before {
+ content:'\e0b3';
+}
+
+.fi-resize-both:before {
+ content:'\e0b4';
+}
+
+.fi-resize-height:before {
+ content:'\e0b5';
+}
+
+.fi-resize-width:before {
+ content:'\e0b6';
+}
+
+.fi-rss-alt:before {
+ content:'\e0b7';
+}
+
+.fi-rss:before {
+ content:'\e0b8';
+}
+
+.fi-script:before {
+ content:'\e0b9';
+}
+
+.fi-share-boxed:before {
+ content:'\e0ba';
+}
+
+.fi-share:before {
+ content:'\e0bb';
+}
+
+.fi-shield:before {
+ content:'\e0bc';
+}
+
+.fi-signal:before {
+ content:'\e0bd';
+}
+
+.fi-signpost:before {
+ content:'\e0be';
+}
+
+.fi-sort-ascending:before {
+ content:'\e0bf';
+}
+
+.fi-sort-descending:before {
+ content:'\e0c0';
+}
+
+.fi-spreadsheet:before {
+ content:'\e0c1';
+}
+
+.fi-star:before {
+ content:'\e0c2';
+}
+
+.fi-sun:before {
+ content:'\e0c3';
+}
+
+.fi-tablet:before {
+ content:'\e0c4';
+}
+
+.fi-tag:before {
+ content:'\e0c5';
+}
+
+.fi-tags:before {
+ content:'\e0c6';
+}
+
+.fi-target:before {
+ content:'\e0c7';
+}
+
+.fi-task:before {
+ content:'\e0c8';
+}
+
+.fi-terminal:before {
+ content:'\e0c9';
+}
+
+.fi-text:before {
+ content:'\e0ca';
+}
+
+.fi-thumb-down:before {
+ content:'\e0cb';
+}
+
+.fi-thumb-up:before {
+ content:'\e0cc';
+}
+
+.fi-timer:before {
+ content:'\e0cd';
+}
+
+.fi-transfer:before {
+ content:'\e0ce';
+}
+
+.fi-trash:before {
+ content:'\e0cf';
+}
+
+.fi-underline:before {
+ content:'\e0d0';
+}
+
+.fi-vertical-align-bottom:before {
+ content:'\e0d1';
+}
+
+.fi-vertical-align-center:before {
+ content:'\e0d2';
+}
+
+.fi-vertical-align-top:before {
+ content:'\e0d3';
+}
+
+.fi-video:before {
+ content:'\e0d4';
+}
+
+.fi-volume-high:before {
+ content:'\e0d5';
+}
+
+.fi-volume-low:before {
+ content:'\e0d6';
+}
+
+.fi-volume-off:before {
+ content:'\e0d7';
+}
+
+.fi-warning:before {
+ content:'\e0d8';
+}
+
+.fi-wifi:before {
+ content:'\e0d9';
+}
+
+.fi-wrench:before {
+ content:'\e0da';
+}
+
+.fi-x:before {
+ content:'\e0db';
+}
+
+.fi-yen:before {
+ content:'\e0dc';
+}
+
+.fi-zoom-in:before {
+ content:'\e0dd';
+}
+
+.fi-zoom-out:before {
+ content:'\e0de';
+}
+
diff --git a/public/font/css/open-iconic-foundation.min.css b/public/font/css/open-iconic-foundation.min.css
new file mode 100644
index 0000000..bd12429
--- /dev/null
+++ b/public/font/css/open-iconic-foundation.min.css
@@ -0,0 +1 @@
+@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.fi-account-login:before,.fi-account-logout:before,.fi-action-redo:before,.fi-action-undo:before,.fi-align-center:before,.fi-align-left:before,.fi-align-right:before,.fi-aperture:before,.fi-arrow-bottom:before,.fi-arrow-circle-bottom:before,.fi-arrow-circle-left:before,.fi-arrow-circle-right:before,.fi-arrow-circle-top:before,.fi-arrow-left:before,.fi-arrow-right:before,.fi-arrow-thick-bottom:before,.fi-arrow-thick-left:before,.fi-arrow-thick-right:before,.fi-arrow-thick-top:before,.fi-arrow-top:before,.fi-audio-spectrum:before,.fi-audio:before,.fi-badge:before,.fi-ban:before,.fi-bar-chart:before,.fi-basket:before,.fi-battery-empty:before,.fi-battery-full:before,.fi-beaker:before,.fi-bell:before,.fi-bluetooth:before,.fi-bold:before,.fi-bolt:before,.fi-book:before,.fi-bookmark:before,.fi-box:before,.fi-briefcase:before,.fi-british-pound:before,.fi-browser:before,.fi-brush:before,.fi-bug:before,.fi-bullhorn:before,.fi-calculator:before,.fi-calendar:before,.fi-camera-slr:before,.fi-caret-bottom:before,.fi-caret-left:before,.fi-caret-right:before,.fi-caret-top:before,.fi-cart:before,.fi-chat:before,.fi-check:before,.fi-chevron-bottom:before,.fi-chevron-left:before,.fi-chevron-right:before,.fi-chevron-top:before,.fi-circle-check:before,.fi-circle-x:before,.fi-clipboard:before,.fi-clock:before,.fi-cloud-download:before,.fi-cloud-upload:before,.fi-cloud:before,.fi-cloudy:before,.fi-code:before,.fi-cog:before,.fi-collapse-down:before,.fi-collapse-left:before,.fi-collapse-right:before,.fi-collapse-up:before,.fi-command:before,.fi-comment-square:before,.fi-compass:before,.fi-contrast:before,.fi-copywriting:before,.fi-credit-card:before,.fi-crop:before,.fi-dashboard:before,.fi-data-transfer-download:before,.fi-data-transfer-upload:before,.fi-delete:before,.fi-dial:before,.fi-document:before,.fi-dollar:before,.fi-double-quote-sans-left:before,.fi-double-quote-sans-right:before,.fi-double-quote-serif-left:before,.fi-double-quote-serif-right:before,.fi-droplet:before,.fi-eject:before,.fi-elevator:before,.fi-ellipses:before,.fi-envelope-closed:before,.fi-envelope-open:before,.fi-euro:before,.fi-excerpt:before,.fi-expand-down:before,.fi-expand-left:before,.fi-expand-right:before,.fi-expand-up:before,.fi-external-link:before,.fi-eye:before,.fi-eyedropper:before,.fi-file:before,.fi-fire:before,.fi-flag:before,.fi-flash:before,.fi-folder:before,.fi-fork:before,.fi-fullscreen-enter:before,.fi-fullscreen-exit:before,.fi-globe:before,.fi-graph:before,.fi-grid-four-up:before,.fi-grid-three-up:before,.fi-grid-two-up:before,.fi-hard-drive:before,.fi-header:before,.fi-headphones:before,.fi-heart:before,.fi-home:before,.fi-image:before,.fi-inbox:before,.fi-infinity:before,.fi-info:before,.fi-italic:before,.fi-justify-center:before,.fi-justify-left:before,.fi-justify-right:before,.fi-key:before,.fi-laptop:before,.fi-layers:before,.fi-lightbulb:before,.fi-link-broken:before,.fi-link-intact:before,.fi-list-rich:before,.fi-list:before,.fi-location:before,.fi-lock-locked:before,.fi-lock-unlocked:before,.fi-loop-circular:before,.fi-loop-square:before,.fi-loop:before,.fi-magnifying-glass:before,.fi-map-marker:before,.fi-map:before,.fi-media-pause:before,.fi-media-play:before,.fi-media-record:before,.fi-media-skip-backward:before,.fi-media-skip-forward:before,.fi-media-step-backward:before,.fi-media-step-forward:before,.fi-media-stop:before,.fi-medical-cross:before,.fi-menu:before,.fi-microphone:before,.fi-minus:before,.fi-monitor:before,.fi-moon:before,.fi-move:before,.fi-musical-note:before,.fi-paperclip:before,.fi-pencil:before,.fi-people:before,.fi-person:before,.fi-phone:before,.fi-pie-chart:before,.fi-pin:before,.fi-play-circle:before,.fi-plus:before,.fi-power-standby:before,.fi-print:before,.fi-project:before,.fi-pulse:before,.fi-puzzle-piece:before,.fi-question-mark:before,.fi-rain:before,.fi-random:before,.fi-reload:before,.fi-resize-both:before,.fi-resize-height:before,.fi-resize-width:before,.fi-rss-alt:before,.fi-rss:before,.fi-script:before,.fi-share-boxed:before,.fi-share:before,.fi-shield:before,.fi-signal:before,.fi-signpost:before,.fi-sort-ascending:before,.fi-sort-descending:before,.fi-spreadsheet:before,.fi-star:before,.fi-sun:before,.fi-tablet:before,.fi-tag:before,.fi-tags:before,.fi-target:before,.fi-task:before,.fi-terminal:before,.fi-text:before,.fi-thumb-down:before,.fi-thumb-up:before,.fi-timer:before,.fi-transfer:before,.fi-trash:before,.fi-underline:before,.fi-vertical-align-bottom:before,.fi-vertical-align-center:before,.fi-vertical-align-top:before,.fi-video:before,.fi-volume-high:before,.fi-volume-low:before,.fi-volume-off:before,.fi-warning:before,.fi-wifi:before,.fi-wrench:before,.fi-x:before,.fi-yen:before,.fi-zoom-in:before,.fi-zoom-out:before{font-family:Icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-decoration:inherit}[class*=fi-].oi-align-center:before{text-align:center}[class*=fi-].oi-align-left:before{text-align:left}[class*=fi-].oi-align-right:before{text-align:right}[class*=fi-].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}[class*=fi-].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}[class*=fi-].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.fi-account-login:before{content:'\e000'}.fi-account-logout:before{content:'\e001'}.fi-action-redo:before{content:'\e002'}.fi-action-undo:before{content:'\e003'}.fi-align-center:before{content:'\e004'}.fi-align-left:before{content:'\e005'}.fi-align-right:before{content:'\e006'}.fi-aperture:before{content:'\e007'}.fi-arrow-bottom:before{content:'\e008'}.fi-arrow-circle-bottom:before{content:'\e009'}.fi-arrow-circle-left:before{content:'\e00a'}.fi-arrow-circle-right:before{content:'\e00b'}.fi-arrow-circle-top:before{content:'\e00c'}.fi-arrow-left:before{content:'\e00d'}.fi-arrow-right:before{content:'\e00e'}.fi-arrow-thick-bottom:before{content:'\e00f'}.fi-arrow-thick-left:before{content:'\e010'}.fi-arrow-thick-right:before{content:'\e011'}.fi-arrow-thick-top:before{content:'\e012'}.fi-arrow-top:before{content:'\e013'}.fi-audio-spectrum:before{content:'\e014'}.fi-audio:before{content:'\e015'}.fi-badge:before{content:'\e016'}.fi-ban:before{content:'\e017'}.fi-bar-chart:before{content:'\e018'}.fi-basket:before{content:'\e019'}.fi-battery-empty:before{content:'\e01a'}.fi-battery-full:before{content:'\e01b'}.fi-beaker:before{content:'\e01c'}.fi-bell:before{content:'\e01d'}.fi-bluetooth:before{content:'\e01e'}.fi-bold:before{content:'\e01f'}.fi-bolt:before{content:'\e020'}.fi-book:before{content:'\e021'}.fi-bookmark:before{content:'\e022'}.fi-box:before{content:'\e023'}.fi-briefcase:before{content:'\e024'}.fi-british-pound:before{content:'\e025'}.fi-browser:before{content:'\e026'}.fi-brush:before{content:'\e027'}.fi-bug:before{content:'\e028'}.fi-bullhorn:before{content:'\e029'}.fi-calculator:before{content:'\e02a'}.fi-calendar:before{content:'\e02b'}.fi-camera-slr:before{content:'\e02c'}.fi-caret-bottom:before{content:'\e02d'}.fi-caret-left:before{content:'\e02e'}.fi-caret-right:before{content:'\e02f'}.fi-caret-top:before{content:'\e030'}.fi-cart:before{content:'\e031'}.fi-chat:before{content:'\e032'}.fi-check:before{content:'\e033'}.fi-chevron-bottom:before{content:'\e034'}.fi-chevron-left:before{content:'\e035'}.fi-chevron-right:before{content:'\e036'}.fi-chevron-top:before{content:'\e037'}.fi-circle-check:before{content:'\e038'}.fi-circle-x:before{content:'\e039'}.fi-clipboard:before{content:'\e03a'}.fi-clock:before{content:'\e03b'}.fi-cloud-download:before{content:'\e03c'}.fi-cloud-upload:before{content:'\e03d'}.fi-cloud:before{content:'\e03e'}.fi-cloudy:before{content:'\e03f'}.fi-code:before{content:'\e040'}.fi-cog:before{content:'\e041'}.fi-collapse-down:before{content:'\e042'}.fi-collapse-left:before{content:'\e043'}.fi-collapse-right:before{content:'\e044'}.fi-collapse-up:before{content:'\e045'}.fi-command:before{content:'\e046'}.fi-comment-square:before{content:'\e047'}.fi-compass:before{content:'\e048'}.fi-contrast:before{content:'\e049'}.fi-copywriting:before{content:'\e04a'}.fi-credit-card:before{content:'\e04b'}.fi-crop:before{content:'\e04c'}.fi-dashboard:before{content:'\e04d'}.fi-data-transfer-download:before{content:'\e04e'}.fi-data-transfer-upload:before{content:'\e04f'}.fi-delete:before{content:'\e050'}.fi-dial:before{content:'\e051'}.fi-document:before{content:'\e052'}.fi-dollar:before{content:'\e053'}.fi-double-quote-sans-left:before{content:'\e054'}.fi-double-quote-sans-right:before{content:'\e055'}.fi-double-quote-serif-left:before{content:'\e056'}.fi-double-quote-serif-right:before{content:'\e057'}.fi-droplet:before{content:'\e058'}.fi-eject:before{content:'\e059'}.fi-elevator:before{content:'\e05a'}.fi-ellipses:before{content:'\e05b'}.fi-envelope-closed:before{content:'\e05c'}.fi-envelope-open:before{content:'\e05d'}.fi-euro:before{content:'\e05e'}.fi-excerpt:before{content:'\e05f'}.fi-expand-down:before{content:'\e060'}.fi-expand-left:before{content:'\e061'}.fi-expand-right:before{content:'\e062'}.fi-expand-up:before{content:'\e063'}.fi-external-link:before{content:'\e064'}.fi-eye:before{content:'\e065'}.fi-eyedropper:before{content:'\e066'}.fi-file:before{content:'\e067'}.fi-fire:before{content:'\e068'}.fi-flag:before{content:'\e069'}.fi-flash:before{content:'\e06a'}.fi-folder:before{content:'\e06b'}.fi-fork:before{content:'\e06c'}.fi-fullscreen-enter:before{content:'\e06d'}.fi-fullscreen-exit:before{content:'\e06e'}.fi-globe:before{content:'\e06f'}.fi-graph:before{content:'\e070'}.fi-grid-four-up:before{content:'\e071'}.fi-grid-three-up:before{content:'\e072'}.fi-grid-two-up:before{content:'\e073'}.fi-hard-drive:before{content:'\e074'}.fi-header:before{content:'\e075'}.fi-headphones:before{content:'\e076'}.fi-heart:before{content:'\e077'}.fi-home:before{content:'\e078'}.fi-image:before{content:'\e079'}.fi-inbox:before{content:'\e07a'}.fi-infinity:before{content:'\e07b'}.fi-info:before{content:'\e07c'}.fi-italic:before{content:'\e07d'}.fi-justify-center:before{content:'\e07e'}.fi-justify-left:before{content:'\e07f'}.fi-justify-right:before{content:'\e080'}.fi-key:before{content:'\e081'}.fi-laptop:before{content:'\e082'}.fi-layers:before{content:'\e083'}.fi-lightbulb:before{content:'\e084'}.fi-link-broken:before{content:'\e085'}.fi-link-intact:before{content:'\e086'}.fi-list-rich:before{content:'\e087'}.fi-list:before{content:'\e088'}.fi-location:before{content:'\e089'}.fi-lock-locked:before{content:'\e08a'}.fi-lock-unlocked:before{content:'\e08b'}.fi-loop-circular:before{content:'\e08c'}.fi-loop-square:before{content:'\e08d'}.fi-loop:before{content:'\e08e'}.fi-magnifying-glass:before{content:'\e08f'}.fi-map-marker:before{content:'\e090'}.fi-map:before{content:'\e091'}.fi-media-pause:before{content:'\e092'}.fi-media-play:before{content:'\e093'}.fi-media-record:before{content:'\e094'}.fi-media-skip-backward:before{content:'\e095'}.fi-media-skip-forward:before{content:'\e096'}.fi-media-step-backward:before{content:'\e097'}.fi-media-step-forward:before{content:'\e098'}.fi-media-stop:before{content:'\e099'}.fi-medical-cross:before{content:'\e09a'}.fi-menu:before{content:'\e09b'}.fi-microphone:before{content:'\e09c'}.fi-minus:before{content:'\e09d'}.fi-monitor:before{content:'\e09e'}.fi-moon:before{content:'\e09f'}.fi-move:before{content:'\e0a0'}.fi-musical-note:before{content:'\e0a1'}.fi-paperclip:before{content:'\e0a2'}.fi-pencil:before{content:'\e0a3'}.fi-people:before{content:'\e0a4'}.fi-person:before{content:'\e0a5'}.fi-phone:before{content:'\e0a6'}.fi-pie-chart:before{content:'\e0a7'}.fi-pin:before{content:'\e0a8'}.fi-play-circle:before{content:'\e0a9'}.fi-plus:before{content:'\e0aa'}.fi-power-standby:before{content:'\e0ab'}.fi-print:before{content:'\e0ac'}.fi-project:before{content:'\e0ad'}.fi-pulse:before{content:'\e0ae'}.fi-puzzle-piece:before{content:'\e0af'}.fi-question-mark:before{content:'\e0b0'}.fi-rain:before{content:'\e0b1'}.fi-random:before{content:'\e0b2'}.fi-reload:before{content:'\e0b3'}.fi-resize-both:before{content:'\e0b4'}.fi-resize-height:before{content:'\e0b5'}.fi-resize-width:before{content:'\e0b6'}.fi-rss-alt:before{content:'\e0b7'}.fi-rss:before{content:'\e0b8'}.fi-script:before{content:'\e0b9'}.fi-share-boxed:before{content:'\e0ba'}.fi-share:before{content:'\e0bb'}.fi-shield:before{content:'\e0bc'}.fi-signal:before{content:'\e0bd'}.fi-signpost:before{content:'\e0be'}.fi-sort-ascending:before{content:'\e0bf'}.fi-sort-descending:before{content:'\e0c0'}.fi-spreadsheet:before{content:'\e0c1'}.fi-star:before{content:'\e0c2'}.fi-sun:before{content:'\e0c3'}.fi-tablet:before{content:'\e0c4'}.fi-tag:before{content:'\e0c5'}.fi-tags:before{content:'\e0c6'}.fi-target:before{content:'\e0c7'}.fi-task:before{content:'\e0c8'}.fi-terminal:before{content:'\e0c9'}.fi-text:before{content:'\e0ca'}.fi-thumb-down:before{content:'\e0cb'}.fi-thumb-up:before{content:'\e0cc'}.fi-timer:before{content:'\e0cd'}.fi-transfer:before{content:'\e0ce'}.fi-trash:before{content:'\e0cf'}.fi-underline:before{content:'\e0d0'}.fi-vertical-align-bottom:before{content:'\e0d1'}.fi-vertical-align-center:before{content:'\e0d2'}.fi-vertical-align-top:before{content:'\e0d3'}.fi-video:before{content:'\e0d4'}.fi-volume-high:before{content:'\e0d5'}.fi-volume-low:before{content:'\e0d6'}.fi-volume-off:before{content:'\e0d7'}.fi-warning:before{content:'\e0d8'}.fi-wifi:before{content:'\e0d9'}.fi-wrench:before{content:'\e0da'}.fi-x:before{content:'\e0db'}.fi-yen:before{content:'\e0dc'}.fi-zoom-in:before{content:'\e0dd'}.fi-zoom-out:before{content:'\e0de'}
\ No newline at end of file
diff --git a/public/font/css/open-iconic-foundation.scss b/public/font/css/open-iconic-foundation.scss
new file mode 100644
index 0000000..fe47138
--- /dev/null
+++ b/public/font/css/open-iconic-foundation.scss
@@ -0,0 +1,1398 @@
+/* Foundation */
+
+/* Font path variable */
+$icon-font-path: '../fonts/' !default;
+
+@font-face {
+ font-family: 'Icons';
+ src: url('#{$icon-font-path}open-iconic.eot');
+ src: url('#{$icon-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$icon-font-path}open-iconic.woff') format('woff'), url('#{$icon-font-path}open-iconic.ttf') format('truetype'), url('#{$icon-font-path}open-iconic.otf') format('opentype'), url('#{$icon-font-path}open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+
+.fi-account-login:before,
+
+.fi-account-logout:before,
+
+.fi-action-redo:before,
+
+.fi-action-undo:before,
+
+.fi-align-center:before,
+
+.fi-align-left:before,
+
+.fi-align-right:before,
+
+.fi-aperture:before,
+
+.fi-arrow-bottom:before,
+
+.fi-arrow-circle-bottom:before,
+
+.fi-arrow-circle-left:before,
+
+.fi-arrow-circle-right:before,
+
+.fi-arrow-circle-top:before,
+
+.fi-arrow-left:before,
+
+.fi-arrow-right:before,
+
+.fi-arrow-thick-bottom:before,
+
+.fi-arrow-thick-left:before,
+
+.fi-arrow-thick-right:before,
+
+.fi-arrow-thick-top:before,
+
+.fi-arrow-top:before,
+
+.fi-audio-spectrum:before,
+
+.fi-audio:before,
+
+.fi-badge:before,
+
+.fi-ban:before,
+
+.fi-bar-chart:before,
+
+.fi-basket:before,
+
+.fi-battery-empty:before,
+
+.fi-battery-full:before,
+
+.fi-beaker:before,
+
+.fi-bell:before,
+
+.fi-bluetooth:before,
+
+.fi-bold:before,
+
+.fi-bolt:before,
+
+.fi-book:before,
+
+.fi-bookmark:before,
+
+.fi-box:before,
+
+.fi-briefcase:before,
+
+.fi-british-pound:before,
+
+.fi-browser:before,
+
+.fi-brush:before,
+
+.fi-bug:before,
+
+.fi-bullhorn:before,
+
+.fi-calculator:before,
+
+.fi-calendar:before,
+
+.fi-camera-slr:before,
+
+.fi-caret-bottom:before,
+
+.fi-caret-left:before,
+
+.fi-caret-right:before,
+
+.fi-caret-top:before,
+
+.fi-cart:before,
+
+.fi-chat:before,
+
+.fi-check:before,
+
+.fi-chevron-bottom:before,
+
+.fi-chevron-left:before,
+
+.fi-chevron-right:before,
+
+.fi-chevron-top:before,
+
+.fi-circle-check:before,
+
+.fi-circle-x:before,
+
+.fi-clipboard:before,
+
+.fi-clock:before,
+
+.fi-cloud-download:before,
+
+.fi-cloud-upload:before,
+
+.fi-cloud:before,
+
+.fi-cloudy:before,
+
+.fi-code:before,
+
+.fi-cog:before,
+
+.fi-collapse-down:before,
+
+.fi-collapse-left:before,
+
+.fi-collapse-right:before,
+
+.fi-collapse-up:before,
+
+.fi-command:before,
+
+.fi-comment-square:before,
+
+.fi-compass:before,
+
+.fi-contrast:before,
+
+.fi-copywriting:before,
+
+.fi-credit-card:before,
+
+.fi-crop:before,
+
+.fi-dashboard:before,
+
+.fi-data-transfer-download:before,
+
+.fi-data-transfer-upload:before,
+
+.fi-delete:before,
+
+.fi-dial:before,
+
+.fi-document:before,
+
+.fi-dollar:before,
+
+.fi-double-quote-sans-left:before,
+
+.fi-double-quote-sans-right:before,
+
+.fi-double-quote-serif-left:before,
+
+.fi-double-quote-serif-right:before,
+
+.fi-droplet:before,
+
+.fi-eject:before,
+
+.fi-elevator:before,
+
+.fi-ellipses:before,
+
+.fi-envelope-closed:before,
+
+.fi-envelope-open:before,
+
+.fi-euro:before,
+
+.fi-excerpt:before,
+
+.fi-expand-down:before,
+
+.fi-expand-left:before,
+
+.fi-expand-right:before,
+
+.fi-expand-up:before,
+
+.fi-external-link:before,
+
+.fi-eye:before,
+
+.fi-eyedropper:before,
+
+.fi-file:before,
+
+.fi-fire:before,
+
+.fi-flag:before,
+
+.fi-flash:before,
+
+.fi-folder:before,
+
+.fi-fork:before,
+
+.fi-fullscreen-enter:before,
+
+.fi-fullscreen-exit:before,
+
+.fi-globe:before,
+
+.fi-graph:before,
+
+.fi-grid-four-up:before,
+
+.fi-grid-three-up:before,
+
+.fi-grid-two-up:before,
+
+.fi-hard-drive:before,
+
+.fi-header:before,
+
+.fi-headphones:before,
+
+.fi-heart:before,
+
+.fi-home:before,
+
+.fi-image:before,
+
+.fi-inbox:before,
+
+.fi-infinity:before,
+
+.fi-info:before,
+
+.fi-italic:before,
+
+.fi-justify-center:before,
+
+.fi-justify-left:before,
+
+.fi-justify-right:before,
+
+.fi-key:before,
+
+.fi-laptop:before,
+
+.fi-layers:before,
+
+.fi-lightbulb:before,
+
+.fi-link-broken:before,
+
+.fi-link-intact:before,
+
+.fi-list-rich:before,
+
+.fi-list:before,
+
+.fi-location:before,
+
+.fi-lock-locked:before,
+
+.fi-lock-unlocked:before,
+
+.fi-loop-circular:before,
+
+.fi-loop-square:before,
+
+.fi-loop:before,
+
+.fi-magnifying-glass:before,
+
+.fi-map-marker:before,
+
+.fi-map:before,
+
+.fi-media-pause:before,
+
+.fi-media-play:before,
+
+.fi-media-record:before,
+
+.fi-media-skip-backward:before,
+
+.fi-media-skip-forward:before,
+
+.fi-media-step-backward:before,
+
+.fi-media-step-forward:before,
+
+.fi-media-stop:before,
+
+.fi-medical-cross:before,
+
+.fi-menu:before,
+
+.fi-microphone:before,
+
+.fi-minus:before,
+
+.fi-monitor:before,
+
+.fi-moon:before,
+
+.fi-move:before,
+
+.fi-musical-note:before,
+
+.fi-paperclip:before,
+
+.fi-pencil:before,
+
+.fi-people:before,
+
+.fi-person:before,
+
+.fi-phone:before,
+
+.fi-pie-chart:before,
+
+.fi-pin:before,
+
+.fi-play-circle:before,
+
+.fi-plus:before,
+
+.fi-power-standby:before,
+
+.fi-print:before,
+
+.fi-project:before,
+
+.fi-pulse:before,
+
+.fi-puzzle-piece:before,
+
+.fi-question-mark:before,
+
+.fi-rain:before,
+
+.fi-random:before,
+
+.fi-reload:before,
+
+.fi-resize-both:before,
+
+.fi-resize-height:before,
+
+.fi-resize-width:before,
+
+.fi-rss-alt:before,
+
+.fi-rss:before,
+
+.fi-script:before,
+
+.fi-share-boxed:before,
+
+.fi-share:before,
+
+.fi-shield:before,
+
+.fi-signal:before,
+
+.fi-signpost:before,
+
+.fi-sort-ascending:before,
+
+.fi-sort-descending:before,
+
+.fi-spreadsheet:before,
+
+.fi-star:before,
+
+.fi-sun:before,
+
+.fi-tablet:before,
+
+.fi-tag:before,
+
+.fi-tags:before,
+
+.fi-target:before,
+
+.fi-task:before,
+
+.fi-terminal:before,
+
+.fi-text:before,
+
+.fi-thumb-down:before,
+
+.fi-thumb-up:before,
+
+.fi-timer:before,
+
+.fi-transfer:before,
+
+.fi-trash:before,
+
+.fi-underline:before,
+
+.fi-vertical-align-bottom:before,
+
+.fi-vertical-align-center:before,
+
+.fi-vertical-align-top:before,
+
+.fi-video:before,
+
+.fi-volume-high:before,
+
+.fi-volume-low:before,
+
+.fi-volume-off:before,
+
+.fi-warning:before,
+
+.fi-wifi:before,
+
+.fi-wrench:before,
+
+.fi-x:before,
+
+.fi-yen:before,
+
+.fi-zoom-in:before,
+
+.fi-zoom-out:before
+ {
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ text-decoration: inherit;
+}
+
+
+[class*='fi-'].oi-align-center:before {
+ text-align: center;
+}
+
+[class*='fi-'].oi-align-left:before {
+ text-align: left;
+}
+
+[class*='fi-'].oi-align-right:before {
+ text-align: right;
+}
+
+
+[class*='fi-'].oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+
+[class*='fi-'].oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+}
+
+[class*='fi-'].oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+}
+
+
+
+.fi-account-login:before {
+ content:'\e000';
+}
+
+.fi-account-logout:before {
+ content:'\e001';
+}
+
+.fi-action-redo:before {
+ content:'\e002';
+}
+
+.fi-action-undo:before {
+ content:'\e003';
+}
+
+.fi-align-center:before {
+ content:'\e004';
+}
+
+.fi-align-left:before {
+ content:'\e005';
+}
+
+.fi-align-right:before {
+ content:'\e006';
+}
+
+.fi-aperture:before {
+ content:'\e007';
+}
+
+.fi-arrow-bottom:before {
+ content:'\e008';
+}
+
+.fi-arrow-circle-bottom:before {
+ content:'\e009';
+}
+
+.fi-arrow-circle-left:before {
+ content:'\e00a';
+}
+
+.fi-arrow-circle-right:before {
+ content:'\e00b';
+}
+
+.fi-arrow-circle-top:before {
+ content:'\e00c';
+}
+
+.fi-arrow-left:before {
+ content:'\e00d';
+}
+
+.fi-arrow-right:before {
+ content:'\e00e';
+}
+
+.fi-arrow-thick-bottom:before {
+ content:'\e00f';
+}
+
+.fi-arrow-thick-left:before {
+ content:'\e010';
+}
+
+.fi-arrow-thick-right:before {
+ content:'\e011';
+}
+
+.fi-arrow-thick-top:before {
+ content:'\e012';
+}
+
+.fi-arrow-top:before {
+ content:'\e013';
+}
+
+.fi-audio-spectrum:before {
+ content:'\e014';
+}
+
+.fi-audio:before {
+ content:'\e015';
+}
+
+.fi-badge:before {
+ content:'\e016';
+}
+
+.fi-ban:before {
+ content:'\e017';
+}
+
+.fi-bar-chart:before {
+ content:'\e018';
+}
+
+.fi-basket:before {
+ content:'\e019';
+}
+
+.fi-battery-empty:before {
+ content:'\e01a';
+}
+
+.fi-battery-full:before {
+ content:'\e01b';
+}
+
+.fi-beaker:before {
+ content:'\e01c';
+}
+
+.fi-bell:before {
+ content:'\e01d';
+}
+
+.fi-bluetooth:before {
+ content:'\e01e';
+}
+
+.fi-bold:before {
+ content:'\e01f';
+}
+
+.fi-bolt:before {
+ content:'\e020';
+}
+
+.fi-book:before {
+ content:'\e021';
+}
+
+.fi-bookmark:before {
+ content:'\e022';
+}
+
+.fi-box:before {
+ content:'\e023';
+}
+
+.fi-briefcase:before {
+ content:'\e024';
+}
+
+.fi-british-pound:before {
+ content:'\e025';
+}
+
+.fi-browser:before {
+ content:'\e026';
+}
+
+.fi-brush:before {
+ content:'\e027';
+}
+
+.fi-bug:before {
+ content:'\e028';
+}
+
+.fi-bullhorn:before {
+ content:'\e029';
+}
+
+.fi-calculator:before {
+ content:'\e02a';
+}
+
+.fi-calendar:before {
+ content:'\e02b';
+}
+
+.fi-camera-slr:before {
+ content:'\e02c';
+}
+
+.fi-caret-bottom:before {
+ content:'\e02d';
+}
+
+.fi-caret-left:before {
+ content:'\e02e';
+}
+
+.fi-caret-right:before {
+ content:'\e02f';
+}
+
+.fi-caret-top:before {
+ content:'\e030';
+}
+
+.fi-cart:before {
+ content:'\e031';
+}
+
+.fi-chat:before {
+ content:'\e032';
+}
+
+.fi-check:before {
+ content:'\e033';
+}
+
+.fi-chevron-bottom:before {
+ content:'\e034';
+}
+
+.fi-chevron-left:before {
+ content:'\e035';
+}
+
+.fi-chevron-right:before {
+ content:'\e036';
+}
+
+.fi-chevron-top:before {
+ content:'\e037';
+}
+
+.fi-circle-check:before {
+ content:'\e038';
+}
+
+.fi-circle-x:before {
+ content:'\e039';
+}
+
+.fi-clipboard:before {
+ content:'\e03a';
+}
+
+.fi-clock:before {
+ content:'\e03b';
+}
+
+.fi-cloud-download:before {
+ content:'\e03c';
+}
+
+.fi-cloud-upload:before {
+ content:'\e03d';
+}
+
+.fi-cloud:before {
+ content:'\e03e';
+}
+
+.fi-cloudy:before {
+ content:'\e03f';
+}
+
+.fi-code:before {
+ content:'\e040';
+}
+
+.fi-cog:before {
+ content:'\e041';
+}
+
+.fi-collapse-down:before {
+ content:'\e042';
+}
+
+.fi-collapse-left:before {
+ content:'\e043';
+}
+
+.fi-collapse-right:before {
+ content:'\e044';
+}
+
+.fi-collapse-up:before {
+ content:'\e045';
+}
+
+.fi-command:before {
+ content:'\e046';
+}
+
+.fi-comment-square:before {
+ content:'\e047';
+}
+
+.fi-compass:before {
+ content:'\e048';
+}
+
+.fi-contrast:before {
+ content:'\e049';
+}
+
+.fi-copywriting:before {
+ content:'\e04a';
+}
+
+.fi-credit-card:before {
+ content:'\e04b';
+}
+
+.fi-crop:before {
+ content:'\e04c';
+}
+
+.fi-dashboard:before {
+ content:'\e04d';
+}
+
+.fi-data-transfer-download:before {
+ content:'\e04e';
+}
+
+.fi-data-transfer-upload:before {
+ content:'\e04f';
+}
+
+.fi-delete:before {
+ content:'\e050';
+}
+
+.fi-dial:before {
+ content:'\e051';
+}
+
+.fi-document:before {
+ content:'\e052';
+}
+
+.fi-dollar:before {
+ content:'\e053';
+}
+
+.fi-double-quote-sans-left:before {
+ content:'\e054';
+}
+
+.fi-double-quote-sans-right:before {
+ content:'\e055';
+}
+
+.fi-double-quote-serif-left:before {
+ content:'\e056';
+}
+
+.fi-double-quote-serif-right:before {
+ content:'\e057';
+}
+
+.fi-droplet:before {
+ content:'\e058';
+}
+
+.fi-eject:before {
+ content:'\e059';
+}
+
+.fi-elevator:before {
+ content:'\e05a';
+}
+
+.fi-ellipses:before {
+ content:'\e05b';
+}
+
+.fi-envelope-closed:before {
+ content:'\e05c';
+}
+
+.fi-envelope-open:before {
+ content:'\e05d';
+}
+
+.fi-euro:before {
+ content:'\e05e';
+}
+
+.fi-excerpt:before {
+ content:'\e05f';
+}
+
+.fi-expand-down:before {
+ content:'\e060';
+}
+
+.fi-expand-left:before {
+ content:'\e061';
+}
+
+.fi-expand-right:before {
+ content:'\e062';
+}
+
+.fi-expand-up:before {
+ content:'\e063';
+}
+
+.fi-external-link:before {
+ content:'\e064';
+}
+
+.fi-eye:before {
+ content:'\e065';
+}
+
+.fi-eyedropper:before {
+ content:'\e066';
+}
+
+.fi-file:before {
+ content:'\e067';
+}
+
+.fi-fire:before {
+ content:'\e068';
+}
+
+.fi-flag:before {
+ content:'\e069';
+}
+
+.fi-flash:before {
+ content:'\e06a';
+}
+
+.fi-folder:before {
+ content:'\e06b';
+}
+
+.fi-fork:before {
+ content:'\e06c';
+}
+
+.fi-fullscreen-enter:before {
+ content:'\e06d';
+}
+
+.fi-fullscreen-exit:before {
+ content:'\e06e';
+}
+
+.fi-globe:before {
+ content:'\e06f';
+}
+
+.fi-graph:before {
+ content:'\e070';
+}
+
+.fi-grid-four-up:before {
+ content:'\e071';
+}
+
+.fi-grid-three-up:before {
+ content:'\e072';
+}
+
+.fi-grid-two-up:before {
+ content:'\e073';
+}
+
+.fi-hard-drive:before {
+ content:'\e074';
+}
+
+.fi-header:before {
+ content:'\e075';
+}
+
+.fi-headphones:before {
+ content:'\e076';
+}
+
+.fi-heart:before {
+ content:'\e077';
+}
+
+.fi-home:before {
+ content:'\e078';
+}
+
+.fi-image:before {
+ content:'\e079';
+}
+
+.fi-inbox:before {
+ content:'\e07a';
+}
+
+.fi-infinity:before {
+ content:'\e07b';
+}
+
+.fi-info:before {
+ content:'\e07c';
+}
+
+.fi-italic:before {
+ content:'\e07d';
+}
+
+.fi-justify-center:before {
+ content:'\e07e';
+}
+
+.fi-justify-left:before {
+ content:'\e07f';
+}
+
+.fi-justify-right:before {
+ content:'\e080';
+}
+
+.fi-key:before {
+ content:'\e081';
+}
+
+.fi-laptop:before {
+ content:'\e082';
+}
+
+.fi-layers:before {
+ content:'\e083';
+}
+
+.fi-lightbulb:before {
+ content:'\e084';
+}
+
+.fi-link-broken:before {
+ content:'\e085';
+}
+
+.fi-link-intact:before {
+ content:'\e086';
+}
+
+.fi-list-rich:before {
+ content:'\e087';
+}
+
+.fi-list:before {
+ content:'\e088';
+}
+
+.fi-location:before {
+ content:'\e089';
+}
+
+.fi-lock-locked:before {
+ content:'\e08a';
+}
+
+.fi-lock-unlocked:before {
+ content:'\e08b';
+}
+
+.fi-loop-circular:before {
+ content:'\e08c';
+}
+
+.fi-loop-square:before {
+ content:'\e08d';
+}
+
+.fi-loop:before {
+ content:'\e08e';
+}
+
+.fi-magnifying-glass:before {
+ content:'\e08f';
+}
+
+.fi-map-marker:before {
+ content:'\e090';
+}
+
+.fi-map:before {
+ content:'\e091';
+}
+
+.fi-media-pause:before {
+ content:'\e092';
+}
+
+.fi-media-play:before {
+ content:'\e093';
+}
+
+.fi-media-record:before {
+ content:'\e094';
+}
+
+.fi-media-skip-backward:before {
+ content:'\e095';
+}
+
+.fi-media-skip-forward:before {
+ content:'\e096';
+}
+
+.fi-media-step-backward:before {
+ content:'\e097';
+}
+
+.fi-media-step-forward:before {
+ content:'\e098';
+}
+
+.fi-media-stop:before {
+ content:'\e099';
+}
+
+.fi-medical-cross:before {
+ content:'\e09a';
+}
+
+.fi-menu:before {
+ content:'\e09b';
+}
+
+.fi-microphone:before {
+ content:'\e09c';
+}
+
+.fi-minus:before {
+ content:'\e09d';
+}
+
+.fi-monitor:before {
+ content:'\e09e';
+}
+
+.fi-moon:before {
+ content:'\e09f';
+}
+
+.fi-move:before {
+ content:'\e0a0';
+}
+
+.fi-musical-note:before {
+ content:'\e0a1';
+}
+
+.fi-paperclip:before {
+ content:'\e0a2';
+}
+
+.fi-pencil:before {
+ content:'\e0a3';
+}
+
+.fi-people:before {
+ content:'\e0a4';
+}
+
+.fi-person:before {
+ content:'\e0a5';
+}
+
+.fi-phone:before {
+ content:'\e0a6';
+}
+
+.fi-pie-chart:before {
+ content:'\e0a7';
+}
+
+.fi-pin:before {
+ content:'\e0a8';
+}
+
+.fi-play-circle:before {
+ content:'\e0a9';
+}
+
+.fi-plus:before {
+ content:'\e0aa';
+}
+
+.fi-power-standby:before {
+ content:'\e0ab';
+}
+
+.fi-print:before {
+ content:'\e0ac';
+}
+
+.fi-project:before {
+ content:'\e0ad';
+}
+
+.fi-pulse:before {
+ content:'\e0ae';
+}
+
+.fi-puzzle-piece:before {
+ content:'\e0af';
+}
+
+.fi-question-mark:before {
+ content:'\e0b0';
+}
+
+.fi-rain:before {
+ content:'\e0b1';
+}
+
+.fi-random:before {
+ content:'\e0b2';
+}
+
+.fi-reload:before {
+ content:'\e0b3';
+}
+
+.fi-resize-both:before {
+ content:'\e0b4';
+}
+
+.fi-resize-height:before {
+ content:'\e0b5';
+}
+
+.fi-resize-width:before {
+ content:'\e0b6';
+}
+
+.fi-rss-alt:before {
+ content:'\e0b7';
+}
+
+.fi-rss:before {
+ content:'\e0b8';
+}
+
+.fi-script:before {
+ content:'\e0b9';
+}
+
+.fi-share-boxed:before {
+ content:'\e0ba';
+}
+
+.fi-share:before {
+ content:'\e0bb';
+}
+
+.fi-shield:before {
+ content:'\e0bc';
+}
+
+.fi-signal:before {
+ content:'\e0bd';
+}
+
+.fi-signpost:before {
+ content:'\e0be';
+}
+
+.fi-sort-ascending:before {
+ content:'\e0bf';
+}
+
+.fi-sort-descending:before {
+ content:'\e0c0';
+}
+
+.fi-spreadsheet:before {
+ content:'\e0c1';
+}
+
+.fi-star:before {
+ content:'\e0c2';
+}
+
+.fi-sun:before {
+ content:'\e0c3';
+}
+
+.fi-tablet:before {
+ content:'\e0c4';
+}
+
+.fi-tag:before {
+ content:'\e0c5';
+}
+
+.fi-tags:before {
+ content:'\e0c6';
+}
+
+.fi-target:before {
+ content:'\e0c7';
+}
+
+.fi-task:before {
+ content:'\e0c8';
+}
+
+.fi-terminal:before {
+ content:'\e0c9';
+}
+
+.fi-text:before {
+ content:'\e0ca';
+}
+
+.fi-thumb-down:before {
+ content:'\e0cb';
+}
+
+.fi-thumb-up:before {
+ content:'\e0cc';
+}
+
+.fi-timer:before {
+ content:'\e0cd';
+}
+
+.fi-transfer:before {
+ content:'\e0ce';
+}
+
+.fi-trash:before {
+ content:'\e0cf';
+}
+
+.fi-underline:before {
+ content:'\e0d0';
+}
+
+.fi-vertical-align-bottom:before {
+ content:'\e0d1';
+}
+
+.fi-vertical-align-center:before {
+ content:'\e0d2';
+}
+
+.fi-vertical-align-top:before {
+ content:'\e0d3';
+}
+
+.fi-video:before {
+ content:'\e0d4';
+}
+
+.fi-volume-high:before {
+ content:'\e0d5';
+}
+
+.fi-volume-low:before {
+ content:'\e0d6';
+}
+
+.fi-volume-off:before {
+ content:'\e0d7';
+}
+
+.fi-warning:before {
+ content:'\e0d8';
+}
+
+.fi-wifi:before {
+ content:'\e0d9';
+}
+
+.fi-wrench:before {
+ content:'\e0da';
+}
+
+.fi-x:before {
+ content:'\e0db';
+}
+
+.fi-yen:before {
+ content:'\e0dc';
+}
+
+.fi-zoom-in:before {
+ content:'\e0dd';
+}
+
+.fi-zoom-out:before {
+ content:'\e0de';
+}
+
diff --git a/public/font/css/open-iconic-foundation.styl b/public/font/css/open-iconic-foundation.styl
new file mode 100644
index 0000000..a52637a
--- /dev/null
+++ b/public/font/css/open-iconic-foundation.styl
@@ -0,0 +1,1392 @@
+/* Foundation */
+
+@font-face
+ font-family 'Icons'
+ src url('../fonts/open-iconic.eot')
+ src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg')
+ font-weight normal
+ font-style normal
+
+
+
+.fi-account-loginbefore,
+
+.fi-account-logoutbefore,
+
+.fi-action-redobefore,
+
+.fi-action-undobefore,
+
+.fi-align-centerbefore,
+
+.fi-align-leftbefore,
+
+.fi-align-rightbefore,
+
+.fi-aperturebefore,
+
+.fi-arrow-bottombefore,
+
+.fi-arrow-circle-bottombefore,
+
+.fi-arrow-circle-leftbefore,
+
+.fi-arrow-circle-rightbefore,
+
+.fi-arrow-circle-topbefore,
+
+.fi-arrow-leftbefore,
+
+.fi-arrow-rightbefore,
+
+.fi-arrow-thick-bottombefore,
+
+.fi-arrow-thick-leftbefore,
+
+.fi-arrow-thick-rightbefore,
+
+.fi-arrow-thick-topbefore,
+
+.fi-arrow-topbefore,
+
+.fi-audio-spectrumbefore,
+
+.fi-audiobefore,
+
+.fi-badgebefore,
+
+.fi-banbefore,
+
+.fi-bar-chartbefore,
+
+.fi-basketbefore,
+
+.fi-battery-emptybefore,
+
+.fi-battery-fullbefore,
+
+.fi-beakerbefore,
+
+.fi-bellbefore,
+
+.fi-bluetoothbefore,
+
+.fi-boldbefore,
+
+.fi-boltbefore,
+
+.fi-bookbefore,
+
+.fi-bookmarkbefore,
+
+.fi-boxbefore,
+
+.fi-briefcasebefore,
+
+.fi-british-poundbefore,
+
+.fi-browserbefore,
+
+.fi-brushbefore,
+
+.fi-bugbefore,
+
+.fi-bullhornbefore,
+
+.fi-calculatorbefore,
+
+.fi-calendarbefore,
+
+.fi-camera-slrbefore,
+
+.fi-caret-bottombefore,
+
+.fi-caret-leftbefore,
+
+.fi-caret-rightbefore,
+
+.fi-caret-topbefore,
+
+.fi-cartbefore,
+
+.fi-chatbefore,
+
+.fi-checkbefore,
+
+.fi-chevron-bottombefore,
+
+.fi-chevron-leftbefore,
+
+.fi-chevron-rightbefore,
+
+.fi-chevron-topbefore,
+
+.fi-circle-checkbefore,
+
+.fi-circle-xbefore,
+
+.fi-clipboardbefore,
+
+.fi-clockbefore,
+
+.fi-cloud-downloadbefore,
+
+.fi-cloud-uploadbefore,
+
+.fi-cloudbefore,
+
+.fi-cloudybefore,
+
+.fi-codebefore,
+
+.fi-cogbefore,
+
+.fi-collapse-downbefore,
+
+.fi-collapse-leftbefore,
+
+.fi-collapse-rightbefore,
+
+.fi-collapse-upbefore,
+
+.fi-commandbefore,
+
+.fi-comment-squarebefore,
+
+.fi-compassbefore,
+
+.fi-contrastbefore,
+
+.fi-copywritingbefore,
+
+.fi-credit-cardbefore,
+
+.fi-cropbefore,
+
+.fi-dashboardbefore,
+
+.fi-data-transfer-downloadbefore,
+
+.fi-data-transfer-uploadbefore,
+
+.fi-deletebefore,
+
+.fi-dialbefore,
+
+.fi-documentbefore,
+
+.fi-dollarbefore,
+
+.fi-double-quote-sans-leftbefore,
+
+.fi-double-quote-sans-rightbefore,
+
+.fi-double-quote-serif-leftbefore,
+
+.fi-double-quote-serif-rightbefore,
+
+.fi-dropletbefore,
+
+.fi-ejectbefore,
+
+.fi-elevatorbefore,
+
+.fi-ellipsesbefore,
+
+.fi-envelope-closedbefore,
+
+.fi-envelope-openbefore,
+
+.fi-eurobefore,
+
+.fi-excerptbefore,
+
+.fi-expand-downbefore,
+
+.fi-expand-leftbefore,
+
+.fi-expand-rightbefore,
+
+.fi-expand-upbefore,
+
+.fi-external-linkbefore,
+
+.fi-eyebefore,
+
+.fi-eyedropperbefore,
+
+.fi-filebefore,
+
+.fi-firebefore,
+
+.fi-flagbefore,
+
+.fi-flashbefore,
+
+.fi-folderbefore,
+
+.fi-forkbefore,
+
+.fi-fullscreen-enterbefore,
+
+.fi-fullscreen-exitbefore,
+
+.fi-globebefore,
+
+.fi-graphbefore,
+
+.fi-grid-four-upbefore,
+
+.fi-grid-three-upbefore,
+
+.fi-grid-two-upbefore,
+
+.fi-hard-drivebefore,
+
+.fi-headerbefore,
+
+.fi-headphonesbefore,
+
+.fi-heartbefore,
+
+.fi-homebefore,
+
+.fi-imagebefore,
+
+.fi-inboxbefore,
+
+.fi-infinitybefore,
+
+.fi-infobefore,
+
+.fi-italicbefore,
+
+.fi-justify-centerbefore,
+
+.fi-justify-leftbefore,
+
+.fi-justify-rightbefore,
+
+.fi-keybefore,
+
+.fi-laptopbefore,
+
+.fi-layersbefore,
+
+.fi-lightbulbbefore,
+
+.fi-link-brokenbefore,
+
+.fi-link-intactbefore,
+
+.fi-list-richbefore,
+
+.fi-listbefore,
+
+.fi-locationbefore,
+
+.fi-lock-lockedbefore,
+
+.fi-lock-unlockedbefore,
+
+.fi-loop-circularbefore,
+
+.fi-loop-squarebefore,
+
+.fi-loopbefore,
+
+.fi-magnifying-glassbefore,
+
+.fi-map-markerbefore,
+
+.fi-mapbefore,
+
+.fi-media-pausebefore,
+
+.fi-media-playbefore,
+
+.fi-media-recordbefore,
+
+.fi-media-skip-backwardbefore,
+
+.fi-media-skip-forwardbefore,
+
+.fi-media-step-backwardbefore,
+
+.fi-media-step-forwardbefore,
+
+.fi-media-stopbefore,
+
+.fi-medical-crossbefore,
+
+.fi-menubefore,
+
+.fi-microphonebefore,
+
+.fi-minusbefore,
+
+.fi-monitorbefore,
+
+.fi-moonbefore,
+
+.fi-movebefore,
+
+.fi-musical-notebefore,
+
+.fi-paperclipbefore,
+
+.fi-pencilbefore,
+
+.fi-peoplebefore,
+
+.fi-personbefore,
+
+.fi-phonebefore,
+
+.fi-pie-chartbefore,
+
+.fi-pinbefore,
+
+.fi-play-circlebefore,
+
+.fi-plusbefore,
+
+.fi-power-standbybefore,
+
+.fi-printbefore,
+
+.fi-projectbefore,
+
+.fi-pulsebefore,
+
+.fi-puzzle-piecebefore,
+
+.fi-question-markbefore,
+
+.fi-rainbefore,
+
+.fi-randombefore,
+
+.fi-reloadbefore,
+
+.fi-resize-bothbefore,
+
+.fi-resize-heightbefore,
+
+.fi-resize-widthbefore,
+
+.fi-rss-altbefore,
+
+.fi-rssbefore,
+
+.fi-scriptbefore,
+
+.fi-share-boxedbefore,
+
+.fi-sharebefore,
+
+.fi-shieldbefore,
+
+.fi-signalbefore,
+
+.fi-signpostbefore,
+
+.fi-sort-ascendingbefore,
+
+.fi-sort-descendingbefore,
+
+.fi-spreadsheetbefore,
+
+.fi-starbefore,
+
+.fi-sunbefore,
+
+.fi-tabletbefore,
+
+.fi-tagbefore,
+
+.fi-tagsbefore,
+
+.fi-targetbefore,
+
+.fi-taskbefore,
+
+.fi-terminalbefore,
+
+.fi-textbefore,
+
+.fi-thumb-downbefore,
+
+.fi-thumb-upbefore,
+
+.fi-timerbefore,
+
+.fi-transferbefore,
+
+.fi-trashbefore,
+
+.fi-underlinebefore,
+
+.fi-vertical-align-bottombefore,
+
+.fi-vertical-align-centerbefore,
+
+.fi-vertical-align-topbefore,
+
+.fi-videobefore,
+
+.fi-volume-highbefore,
+
+.fi-volume-lowbefore,
+
+.fi-volume-offbefore,
+
+.fi-warningbefore,
+
+.fi-wifibefore,
+
+.fi-wrenchbefore,
+
+.fi-xbefore,
+
+.fi-yenbefore,
+
+.fi-zoom-inbefore,
+
+.fi-zoom-outbefore
+
+ font-family 'Icons'
+ font-style normal
+ font-weight normal
+ font-variant normal
+ text-transform none
+ line-height 1
+ -webkit-font-smoothing antialiased
+ -moz-osx-font-smoothing grayscale
+ display inline-block
+ text-decoration inherit
+
+
+[class*='fi-'].oi-align-center:before
+ text-align center
+
+
+[class*='fi-'].oi-align-left:before
+ text-align left
+
+
+[class*='fi-'].oi-align-right:before
+ text-align right
+
+
+
+[class*='fi-'].oi-flip-horizontal:before
+ -webkit-transform scale(-1, 1)
+ -ms-transform scale(-1, 1)
+ transform scale(-1, 1)
+
+
+[class*='fi-'].oi-flip-vertical:before
+ -webkit-transform scale(1, -1)
+ -ms-transform scale(-1, 1)
+ transform scale(1, -1)
+
+
+[class*='fi-'].oi-flip-horizontal-vertical:before
+ -webkit-transform scale(-1, -1)
+ -ms-transform scale(-1, 1)
+ transform scale(-1, -1)
+
+
+.fi-account-login:before
+ content'\e000'
+
+
+.fi-account-logout:before
+ content'\e001'
+
+
+.fi-action-redo:before
+ content'\e002'
+
+
+.fi-action-undo:before
+ content'\e003'
+
+
+.fi-align-center:before
+ content'\e004'
+
+
+.fi-align-left:before
+ content'\e005'
+
+
+.fi-align-right:before
+ content'\e006'
+
+
+.fi-aperture:before
+ content'\e007'
+
+
+.fi-arrow-bottom:before
+ content'\e008'
+
+
+.fi-arrow-circle-bottom:before
+ content'\e009'
+
+
+.fi-arrow-circle-left:before
+ content'\e00a'
+
+
+.fi-arrow-circle-right:before
+ content'\e00b'
+
+
+.fi-arrow-circle-top:before
+ content'\e00c'
+
+
+.fi-arrow-left:before
+ content'\e00d'
+
+
+.fi-arrow-right:before
+ content'\e00e'
+
+
+.fi-arrow-thick-bottom:before
+ content'\e00f'
+
+
+.fi-arrow-thick-left:before
+ content'\e010'
+
+
+.fi-arrow-thick-right:before
+ content'\e011'
+
+
+.fi-arrow-thick-top:before
+ content'\e012'
+
+
+.fi-arrow-top:before
+ content'\e013'
+
+
+.fi-audio-spectrum:before
+ content'\e014'
+
+
+.fi-audio:before
+ content'\e015'
+
+
+.fi-badge:before
+ content'\e016'
+
+
+.fi-ban:before
+ content'\e017'
+
+
+.fi-bar-chart:before
+ content'\e018'
+
+
+.fi-basket:before
+ content'\e019'
+
+
+.fi-battery-empty:before
+ content'\e01a'
+
+
+.fi-battery-full:before
+ content'\e01b'
+
+
+.fi-beaker:before
+ content'\e01c'
+
+
+.fi-bell:before
+ content'\e01d'
+
+
+.fi-bluetooth:before
+ content'\e01e'
+
+
+.fi-bold:before
+ content'\e01f'
+
+
+.fi-bolt:before
+ content'\e020'
+
+
+.fi-book:before
+ content'\e021'
+
+
+.fi-bookmark:before
+ content'\e022'
+
+
+.fi-box:before
+ content'\e023'
+
+
+.fi-briefcase:before
+ content'\e024'
+
+
+.fi-british-pound:before
+ content'\e025'
+
+
+.fi-browser:before
+ content'\e026'
+
+
+.fi-brush:before
+ content'\e027'
+
+
+.fi-bug:before
+ content'\e028'
+
+
+.fi-bullhorn:before
+ content'\e029'
+
+
+.fi-calculator:before
+ content'\e02a'
+
+
+.fi-calendar:before
+ content'\e02b'
+
+
+.fi-camera-slr:before
+ content'\e02c'
+
+
+.fi-caret-bottom:before
+ content'\e02d'
+
+
+.fi-caret-left:before
+ content'\e02e'
+
+
+.fi-caret-right:before
+ content'\e02f'
+
+
+.fi-caret-top:before
+ content'\e030'
+
+
+.fi-cart:before
+ content'\e031'
+
+
+.fi-chat:before
+ content'\e032'
+
+
+.fi-check:before
+ content'\e033'
+
+
+.fi-chevron-bottom:before
+ content'\e034'
+
+
+.fi-chevron-left:before
+ content'\e035'
+
+
+.fi-chevron-right:before
+ content'\e036'
+
+
+.fi-chevron-top:before
+ content'\e037'
+
+
+.fi-circle-check:before
+ content'\e038'
+
+
+.fi-circle-x:before
+ content'\e039'
+
+
+.fi-clipboard:before
+ content'\e03a'
+
+
+.fi-clock:before
+ content'\e03b'
+
+
+.fi-cloud-download:before
+ content'\e03c'
+
+
+.fi-cloud-upload:before
+ content'\e03d'
+
+
+.fi-cloud:before
+ content'\e03e'
+
+
+.fi-cloudy:before
+ content'\e03f'
+
+
+.fi-code:before
+ content'\e040'
+
+
+.fi-cog:before
+ content'\e041'
+
+
+.fi-collapse-down:before
+ content'\e042'
+
+
+.fi-collapse-left:before
+ content'\e043'
+
+
+.fi-collapse-right:before
+ content'\e044'
+
+
+.fi-collapse-up:before
+ content'\e045'
+
+
+.fi-command:before
+ content'\e046'
+
+
+.fi-comment-square:before
+ content'\e047'
+
+
+.fi-compass:before
+ content'\e048'
+
+
+.fi-contrast:before
+ content'\e049'
+
+
+.fi-copywriting:before
+ content'\e04a'
+
+
+.fi-credit-card:before
+ content'\e04b'
+
+
+.fi-crop:before
+ content'\e04c'
+
+
+.fi-dashboard:before
+ content'\e04d'
+
+
+.fi-data-transfer-download:before
+ content'\e04e'
+
+
+.fi-data-transfer-upload:before
+ content'\e04f'
+
+
+.fi-delete:before
+ content'\e050'
+
+
+.fi-dial:before
+ content'\e051'
+
+
+.fi-document:before
+ content'\e052'
+
+
+.fi-dollar:before
+ content'\e053'
+
+
+.fi-double-quote-sans-left:before
+ content'\e054'
+
+
+.fi-double-quote-sans-right:before
+ content'\e055'
+
+
+.fi-double-quote-serif-left:before
+ content'\e056'
+
+
+.fi-double-quote-serif-right:before
+ content'\e057'
+
+
+.fi-droplet:before
+ content'\e058'
+
+
+.fi-eject:before
+ content'\e059'
+
+
+.fi-elevator:before
+ content'\e05a'
+
+
+.fi-ellipses:before
+ content'\e05b'
+
+
+.fi-envelope-closed:before
+ content'\e05c'
+
+
+.fi-envelope-open:before
+ content'\e05d'
+
+
+.fi-euro:before
+ content'\e05e'
+
+
+.fi-excerpt:before
+ content'\e05f'
+
+
+.fi-expand-down:before
+ content'\e060'
+
+
+.fi-expand-left:before
+ content'\e061'
+
+
+.fi-expand-right:before
+ content'\e062'
+
+
+.fi-expand-up:before
+ content'\e063'
+
+
+.fi-external-link:before
+ content'\e064'
+
+
+.fi-eye:before
+ content'\e065'
+
+
+.fi-eyedropper:before
+ content'\e066'
+
+
+.fi-file:before
+ content'\e067'
+
+
+.fi-fire:before
+ content'\e068'
+
+
+.fi-flag:before
+ content'\e069'
+
+
+.fi-flash:before
+ content'\e06a'
+
+
+.fi-folder:before
+ content'\e06b'
+
+
+.fi-fork:before
+ content'\e06c'
+
+
+.fi-fullscreen-enter:before
+ content'\e06d'
+
+
+.fi-fullscreen-exit:before
+ content'\e06e'
+
+
+.fi-globe:before
+ content'\e06f'
+
+
+.fi-graph:before
+ content'\e070'
+
+
+.fi-grid-four-up:before
+ content'\e071'
+
+
+.fi-grid-three-up:before
+ content'\e072'
+
+
+.fi-grid-two-up:before
+ content'\e073'
+
+
+.fi-hard-drive:before
+ content'\e074'
+
+
+.fi-header:before
+ content'\e075'
+
+
+.fi-headphones:before
+ content'\e076'
+
+
+.fi-heart:before
+ content'\e077'
+
+
+.fi-home:before
+ content'\e078'
+
+
+.fi-image:before
+ content'\e079'
+
+
+.fi-inbox:before
+ content'\e07a'
+
+
+.fi-infinity:before
+ content'\e07b'
+
+
+.fi-info:before
+ content'\e07c'
+
+
+.fi-italic:before
+ content'\e07d'
+
+
+.fi-justify-center:before
+ content'\e07e'
+
+
+.fi-justify-left:before
+ content'\e07f'
+
+
+.fi-justify-right:before
+ content'\e080'
+
+
+.fi-key:before
+ content'\e081'
+
+
+.fi-laptop:before
+ content'\e082'
+
+
+.fi-layers:before
+ content'\e083'
+
+
+.fi-lightbulb:before
+ content'\e084'
+
+
+.fi-link-broken:before
+ content'\e085'
+
+
+.fi-link-intact:before
+ content'\e086'
+
+
+.fi-list-rich:before
+ content'\e087'
+
+
+.fi-list:before
+ content'\e088'
+
+
+.fi-location:before
+ content'\e089'
+
+
+.fi-lock-locked:before
+ content'\e08a'
+
+
+.fi-lock-unlocked:before
+ content'\e08b'
+
+
+.fi-loop-circular:before
+ content'\e08c'
+
+
+.fi-loop-square:before
+ content'\e08d'
+
+
+.fi-loop:before
+ content'\e08e'
+
+
+.fi-magnifying-glass:before
+ content'\e08f'
+
+
+.fi-map-marker:before
+ content'\e090'
+
+
+.fi-map:before
+ content'\e091'
+
+
+.fi-media-pause:before
+ content'\e092'
+
+
+.fi-media-play:before
+ content'\e093'
+
+
+.fi-media-record:before
+ content'\e094'
+
+
+.fi-media-skip-backward:before
+ content'\e095'
+
+
+.fi-media-skip-forward:before
+ content'\e096'
+
+
+.fi-media-step-backward:before
+ content'\e097'
+
+
+.fi-media-step-forward:before
+ content'\e098'
+
+
+.fi-media-stop:before
+ content'\e099'
+
+
+.fi-medical-cross:before
+ content'\e09a'
+
+
+.fi-menu:before
+ content'\e09b'
+
+
+.fi-microphone:before
+ content'\e09c'
+
+
+.fi-minus:before
+ content'\e09d'
+
+
+.fi-monitor:before
+ content'\e09e'
+
+
+.fi-moon:before
+ content'\e09f'
+
+
+.fi-move:before
+ content'\e0a0'
+
+
+.fi-musical-note:before
+ content'\e0a1'
+
+
+.fi-paperclip:before
+ content'\e0a2'
+
+
+.fi-pencil:before
+ content'\e0a3'
+
+
+.fi-people:before
+ content'\e0a4'
+
+
+.fi-person:before
+ content'\e0a5'
+
+
+.fi-phone:before
+ content'\e0a6'
+
+
+.fi-pie-chart:before
+ content'\e0a7'
+
+
+.fi-pin:before
+ content'\e0a8'
+
+
+.fi-play-circle:before
+ content'\e0a9'
+
+
+.fi-plus:before
+ content'\e0aa'
+
+
+.fi-power-standby:before
+ content'\e0ab'
+
+
+.fi-print:before
+ content'\e0ac'
+
+
+.fi-project:before
+ content'\e0ad'
+
+
+.fi-pulse:before
+ content'\e0ae'
+
+
+.fi-puzzle-piece:before
+ content'\e0af'
+
+
+.fi-question-mark:before
+ content'\e0b0'
+
+
+.fi-rain:before
+ content'\e0b1'
+
+
+.fi-random:before
+ content'\e0b2'
+
+
+.fi-reload:before
+ content'\e0b3'
+
+
+.fi-resize-both:before
+ content'\e0b4'
+
+
+.fi-resize-height:before
+ content'\e0b5'
+
+
+.fi-resize-width:before
+ content'\e0b6'
+
+
+.fi-rss-alt:before
+ content'\e0b7'
+
+
+.fi-rss:before
+ content'\e0b8'
+
+
+.fi-script:before
+ content'\e0b9'
+
+
+.fi-share-boxed:before
+ content'\e0ba'
+
+
+.fi-share:before
+ content'\e0bb'
+
+
+.fi-shield:before
+ content'\e0bc'
+
+
+.fi-signal:before
+ content'\e0bd'
+
+
+.fi-signpost:before
+ content'\e0be'
+
+
+.fi-sort-ascending:before
+ content'\e0bf'
+
+
+.fi-sort-descending:before
+ content'\e0c0'
+
+
+.fi-spreadsheet:before
+ content'\e0c1'
+
+
+.fi-star:before
+ content'\e0c2'
+
+
+.fi-sun:before
+ content'\e0c3'
+
+
+.fi-tablet:before
+ content'\e0c4'
+
+
+.fi-tag:before
+ content'\e0c5'
+
+
+.fi-tags:before
+ content'\e0c6'
+
+
+.fi-target:before
+ content'\e0c7'
+
+
+.fi-task:before
+ content'\e0c8'
+
+
+.fi-terminal:before
+ content'\e0c9'
+
+
+.fi-text:before
+ content'\e0ca'
+
+
+.fi-thumb-down:before
+ content'\e0cb'
+
+
+.fi-thumb-up:before
+ content'\e0cc'
+
+
+.fi-timer:before
+ content'\e0cd'
+
+
+.fi-transfer:before
+ content'\e0ce'
+
+
+.fi-trash:before
+ content'\e0cf'
+
+
+.fi-underline:before
+ content'\e0d0'
+
+
+.fi-vertical-align-bottom:before
+ content'\e0d1'
+
+
+.fi-vertical-align-center:before
+ content'\e0d2'
+
+
+.fi-vertical-align-top:before
+ content'\e0d3'
+
+
+.fi-video:before
+ content'\e0d4'
+
+
+.fi-volume-high:before
+ content'\e0d5'
+
+
+.fi-volume-low:before
+ content'\e0d6'
+
+
+.fi-volume-off:before
+ content'\e0d7'
+
+
+.fi-warning:before
+ content'\e0d8'
+
+
+.fi-wifi:before
+ content'\e0d9'
+
+
+.fi-wrench:before
+ content'\e0da'
+
+
+.fi-x:before
+ content'\e0db'
+
+
+.fi-yen:before
+ content'\e0dc'
+
+
+.fi-zoom-in:before
+ content'\e0dd'
+
+
+.fi-zoom-out:before
+ content'\e0de'
+
+
diff --git a/public/font/css/open-iconic.css b/public/font/css/open-iconic.css
new file mode 100644
index 0000000..301a138
--- /dev/null
+++ b/public/font/css/open-iconic.css
@@ -0,0 +1,511 @@
+
+@font-face {
+ font-family: 'Icons';
+ src: url('../fonts/open-iconic.eot');
+ src: url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.oi[data-glyph].oi-text-replace {
+ font-size: 0;
+ line-height: 0;
+}
+
+.oi[data-glyph].oi-text-replace:before {
+ width: 1em;
+ text-align: center;
+}
+
+.oi[data-glyph]:before {
+ font-family: 'Icons';
+ display: inline-block;
+ speak: none;
+ line-height: 1;
+ vertical-align: baseline;
+ font-weight: normal;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.oi[data-glyph]:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+}
+
+.oi[data-glyph].oi-align-left:before {
+ text-align: left;
+}
+
+.oi[data-glyph].oi-align-right:before {
+ text-align: right;
+}
+
+.oi[data-glyph].oi-align-center:before {
+ text-align: center;
+}
+
+.oi[data-glyph].oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.oi[data-glyph].oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+}
+.oi[data-glyph].oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+}
+
+
+.oi[data-glyph=account-login]:before { content:'\e000'; }
+
+.oi[data-glyph=account-logout]:before { content:'\e001'; }
+
+.oi[data-glyph=action-redo]:before { content:'\e002'; }
+
+.oi[data-glyph=action-undo]:before { content:'\e003'; }
+
+.oi[data-glyph=align-center]:before { content:'\e004'; }
+
+.oi[data-glyph=align-left]:before { content:'\e005'; }
+
+.oi[data-glyph=align-right]:before { content:'\e006'; }
+
+.oi[data-glyph=aperture]:before { content:'\e007'; }
+
+.oi[data-glyph=arrow-bottom]:before { content:'\e008'; }
+
+.oi[data-glyph=arrow-circle-bottom]:before { content:'\e009'; }
+
+.oi[data-glyph=arrow-circle-left]:before { content:'\e00a'; }
+
+.oi[data-glyph=arrow-circle-right]:before { content:'\e00b'; }
+
+.oi[data-glyph=arrow-circle-top]:before { content:'\e00c'; }
+
+.oi[data-glyph=arrow-left]:before { content:'\e00d'; }
+
+.oi[data-glyph=arrow-right]:before { content:'\e00e'; }
+
+.oi[data-glyph=arrow-thick-bottom]:before { content:'\e00f'; }
+
+.oi[data-glyph=arrow-thick-left]:before { content:'\e010'; }
+
+.oi[data-glyph=arrow-thick-right]:before { content:'\e011'; }
+
+.oi[data-glyph=arrow-thick-top]:before { content:'\e012'; }
+
+.oi[data-glyph=arrow-top]:before { content:'\e013'; }
+
+.oi[data-glyph=audio-spectrum]:before { content:'\e014'; }
+
+.oi[data-glyph=audio]:before { content:'\e015'; }
+
+.oi[data-glyph=badge]:before { content:'\e016'; }
+
+.oi[data-glyph=ban]:before { content:'\e017'; }
+
+.oi[data-glyph=bar-chart]:before { content:'\e018'; }
+
+.oi[data-glyph=basket]:before { content:'\e019'; }
+
+.oi[data-glyph=battery-empty]:before { content:'\e01a'; }
+
+.oi[data-glyph=battery-full]:before { content:'\e01b'; }
+
+.oi[data-glyph=beaker]:before { content:'\e01c'; }
+
+.oi[data-glyph=bell]:before { content:'\e01d'; }
+
+.oi[data-glyph=bluetooth]:before { content:'\e01e'; }
+
+.oi[data-glyph=bold]:before { content:'\e01f'; }
+
+.oi[data-glyph=bolt]:before { content:'\e020'; }
+
+.oi[data-glyph=book]:before { content:'\e021'; }
+
+.oi[data-glyph=bookmark]:before { content:'\e022'; }
+
+.oi[data-glyph=box]:before { content:'\e023'; }
+
+.oi[data-glyph=briefcase]:before { content:'\e024'; }
+
+.oi[data-glyph=british-pound]:before { content:'\e025'; }
+
+.oi[data-glyph=browser]:before { content:'\e026'; }
+
+.oi[data-glyph=brush]:before { content:'\e027'; }
+
+.oi[data-glyph=bug]:before { content:'\e028'; }
+
+.oi[data-glyph=bullhorn]:before { content:'\e029'; }
+
+.oi[data-glyph=calculator]:before { content:'\e02a'; }
+
+.oi[data-glyph=calendar]:before { content:'\e02b'; }
+
+.oi[data-glyph=camera-slr]:before { content:'\e02c'; }
+
+.oi[data-glyph=caret-bottom]:before { content:'\e02d'; }
+
+.oi[data-glyph=caret-left]:before { content:'\e02e'; }
+
+.oi[data-glyph=caret-right]:before { content:'\e02f'; }
+
+.oi[data-glyph=caret-top]:before { content:'\e030'; }
+
+.oi[data-glyph=cart]:before { content:'\e031'; }
+
+.oi[data-glyph=chat]:before { content:'\e032'; }
+
+.oi[data-glyph=check]:before { content:'\e033'; }
+
+.oi[data-glyph=chevron-bottom]:before { content:'\e034'; }
+
+.oi[data-glyph=chevron-left]:before { content:'\e035'; }
+
+.oi[data-glyph=chevron-right]:before { content:'\e036'; }
+
+.oi[data-glyph=chevron-top]:before { content:'\e037'; }
+
+.oi[data-glyph=circle-check]:before { content:'\e038'; }
+
+.oi[data-glyph=circle-x]:before { content:'\e039'; }
+
+.oi[data-glyph=clipboard]:before { content:'\e03a'; }
+
+.oi[data-glyph=clock]:before { content:'\e03b'; }
+
+.oi[data-glyph=cloud-download]:before { content:'\e03c'; }
+
+.oi[data-glyph=cloud-upload]:before { content:'\e03d'; }
+
+.oi[data-glyph=cloud]:before { content:'\e03e'; }
+
+.oi[data-glyph=cloudy]:before { content:'\e03f'; }
+
+.oi[data-glyph=code]:before { content:'\e040'; }
+
+.oi[data-glyph=cog]:before { content:'\e041'; }
+
+.oi[data-glyph=collapse-down]:before { content:'\e042'; }
+
+.oi[data-glyph=collapse-left]:before { content:'\e043'; }
+
+.oi[data-glyph=collapse-right]:before { content:'\e044'; }
+
+.oi[data-glyph=collapse-up]:before { content:'\e045'; }
+
+.oi[data-glyph=command]:before { content:'\e046'; }
+
+.oi[data-glyph=comment-square]:before { content:'\e047'; }
+
+.oi[data-glyph=compass]:before { content:'\e048'; }
+
+.oi[data-glyph=contrast]:before { content:'\e049'; }
+
+.oi[data-glyph=copywriting]:before { content:'\e04a'; }
+
+.oi[data-glyph=credit-card]:before { content:'\e04b'; }
+
+.oi[data-glyph=crop]:before { content:'\e04c'; }
+
+.oi[data-glyph=dashboard]:before { content:'\e04d'; }
+
+.oi[data-glyph=data-transfer-download]:before { content:'\e04e'; }
+
+.oi[data-glyph=data-transfer-upload]:before { content:'\e04f'; }
+
+.oi[data-glyph=delete]:before { content:'\e050'; }
+
+.oi[data-glyph=dial]:before { content:'\e051'; }
+
+.oi[data-glyph=document]:before { content:'\e052'; }
+
+.oi[data-glyph=dollar]:before { content:'\e053'; }
+
+.oi[data-glyph=double-quote-sans-left]:before { content:'\e054'; }
+
+.oi[data-glyph=double-quote-sans-right]:before { content:'\e055'; }
+
+.oi[data-glyph=double-quote-serif-left]:before { content:'\e056'; }
+
+.oi[data-glyph=double-quote-serif-right]:before { content:'\e057'; }
+
+.oi[data-glyph=droplet]:before { content:'\e058'; }
+
+.oi[data-glyph=eject]:before { content:'\e059'; }
+
+.oi[data-glyph=elevator]:before { content:'\e05a'; }
+
+.oi[data-glyph=ellipses]:before { content:'\e05b'; }
+
+.oi[data-glyph=envelope-closed]:before { content:'\e05c'; }
+
+.oi[data-glyph=envelope-open]:before { content:'\e05d'; }
+
+.oi[data-glyph=euro]:before { content:'\e05e'; }
+
+.oi[data-glyph=excerpt]:before { content:'\e05f'; }
+
+.oi[data-glyph=expand-down]:before { content:'\e060'; }
+
+.oi[data-glyph=expand-left]:before { content:'\e061'; }
+
+.oi[data-glyph=expand-right]:before { content:'\e062'; }
+
+.oi[data-glyph=expand-up]:before { content:'\e063'; }
+
+.oi[data-glyph=external-link]:before { content:'\e064'; }
+
+.oi[data-glyph=eye]:before { content:'\e065'; }
+
+.oi[data-glyph=eyedropper]:before { content:'\e066'; }
+
+.oi[data-glyph=file]:before { content:'\e067'; }
+
+.oi[data-glyph=fire]:before { content:'\e068'; }
+
+.oi[data-glyph=flag]:before { content:'\e069'; }
+
+.oi[data-glyph=flash]:before { content:'\e06a'; }
+
+.oi[data-glyph=folder]:before { content:'\e06b'; }
+
+.oi[data-glyph=fork]:before { content:'\e06c'; }
+
+.oi[data-glyph=fullscreen-enter]:before { content:'\e06d'; }
+
+.oi[data-glyph=fullscreen-exit]:before { content:'\e06e'; }
+
+.oi[data-glyph=globe]:before { content:'\e06f'; }
+
+.oi[data-glyph=graph]:before { content:'\e070'; }
+
+.oi[data-glyph=grid-four-up]:before { content:'\e071'; }
+
+.oi[data-glyph=grid-three-up]:before { content:'\e072'; }
+
+.oi[data-glyph=grid-two-up]:before { content:'\e073'; }
+
+.oi[data-glyph=hard-drive]:before { content:'\e074'; }
+
+.oi[data-glyph=header]:before { content:'\e075'; }
+
+.oi[data-glyph=headphones]:before { content:'\e076'; }
+
+.oi[data-glyph=heart]:before { content:'\e077'; }
+
+.oi[data-glyph=home]:before { content:'\e078'; }
+
+.oi[data-glyph=image]:before { content:'\e079'; }
+
+.oi[data-glyph=inbox]:before { content:'\e07a'; }
+
+.oi[data-glyph=infinity]:before { content:'\e07b'; }
+
+.oi[data-glyph=info]:before { content:'\e07c'; }
+
+.oi[data-glyph=italic]:before { content:'\e07d'; }
+
+.oi[data-glyph=justify-center]:before { content:'\e07e'; }
+
+.oi[data-glyph=justify-left]:before { content:'\e07f'; }
+
+.oi[data-glyph=justify-right]:before { content:'\e080'; }
+
+.oi[data-glyph=key]:before { content:'\e081'; }
+
+.oi[data-glyph=laptop]:before { content:'\e082'; }
+
+.oi[data-glyph=layers]:before { content:'\e083'; }
+
+.oi[data-glyph=lightbulb]:before { content:'\e084'; }
+
+.oi[data-glyph=link-broken]:before { content:'\e085'; }
+
+.oi[data-glyph=link-intact]:before { content:'\e086'; }
+
+.oi[data-glyph=list-rich]:before { content:'\e087'; }
+
+.oi[data-glyph=list]:before { content:'\e088'; }
+
+.oi[data-glyph=location]:before { content:'\e089'; }
+
+.oi[data-glyph=lock-locked]:before { content:'\e08a'; }
+
+.oi[data-glyph=lock-unlocked]:before { content:'\e08b'; }
+
+.oi[data-glyph=loop-circular]:before { content:'\e08c'; }
+
+.oi[data-glyph=loop-square]:before { content:'\e08d'; }
+
+.oi[data-glyph=loop]:before { content:'\e08e'; }
+
+.oi[data-glyph=magnifying-glass]:before { content:'\e08f'; }
+
+.oi[data-glyph=map-marker]:before { content:'\e090'; }
+
+.oi[data-glyph=map]:before { content:'\e091'; }
+
+.oi[data-glyph=media-pause]:before { content:'\e092'; }
+
+.oi[data-glyph=media-play]:before { content:'\e093'; }
+
+.oi[data-glyph=media-record]:before { content:'\e094'; }
+
+.oi[data-glyph=media-skip-backward]:before { content:'\e095'; }
+
+.oi[data-glyph=media-skip-forward]:before { content:'\e096'; }
+
+.oi[data-glyph=media-step-backward]:before { content:'\e097'; }
+
+.oi[data-glyph=media-step-forward]:before { content:'\e098'; }
+
+.oi[data-glyph=media-stop]:before { content:'\e099'; }
+
+.oi[data-glyph=medical-cross]:before { content:'\e09a'; }
+
+.oi[data-glyph=menu]:before { content:'\e09b'; }
+
+.oi[data-glyph=microphone]:before { content:'\e09c'; }
+
+.oi[data-glyph=minus]:before { content:'\e09d'; }
+
+.oi[data-glyph=monitor]:before { content:'\e09e'; }
+
+.oi[data-glyph=moon]:before { content:'\e09f'; }
+
+.oi[data-glyph=move]:before { content:'\e0a0'; }
+
+.oi[data-glyph=musical-note]:before { content:'\e0a1'; }
+
+.oi[data-glyph=paperclip]:before { content:'\e0a2'; }
+
+.oi[data-glyph=pencil]:before { content:'\e0a3'; }
+
+.oi[data-glyph=people]:before { content:'\e0a4'; }
+
+.oi[data-glyph=person]:before { content:'\e0a5'; }
+
+.oi[data-glyph=phone]:before { content:'\e0a6'; }
+
+.oi[data-glyph=pie-chart]:before { content:'\e0a7'; }
+
+.oi[data-glyph=pin]:before { content:'\e0a8'; }
+
+.oi[data-glyph=play-circle]:before { content:'\e0a9'; }
+
+.oi[data-glyph=plus]:before { content:'\e0aa'; }
+
+.oi[data-glyph=power-standby]:before { content:'\e0ab'; }
+
+.oi[data-glyph=print]:before { content:'\e0ac'; }
+
+.oi[data-glyph=project]:before { content:'\e0ad'; }
+
+.oi[data-glyph=pulse]:before { content:'\e0ae'; }
+
+.oi[data-glyph=puzzle-piece]:before { content:'\e0af'; }
+
+.oi[data-glyph=question-mark]:before { content:'\e0b0'; }
+
+.oi[data-glyph=rain]:before { content:'\e0b1'; }
+
+.oi[data-glyph=random]:before { content:'\e0b2'; }
+
+.oi[data-glyph=reload]:before { content:'\e0b3'; }
+
+.oi[data-glyph=resize-both]:before { content:'\e0b4'; }
+
+.oi[data-glyph=resize-height]:before { content:'\e0b5'; }
+
+.oi[data-glyph=resize-width]:before { content:'\e0b6'; }
+
+.oi[data-glyph=rss-alt]:before { content:'\e0b7'; }
+
+.oi[data-glyph=rss]:before { content:'\e0b8'; }
+
+.oi[data-glyph=script]:before { content:'\e0b9'; }
+
+.oi[data-glyph=share-boxed]:before { content:'\e0ba'; }
+
+.oi[data-glyph=share]:before { content:'\e0bb'; }
+
+.oi[data-glyph=shield]:before { content:'\e0bc'; }
+
+.oi[data-glyph=signal]:before { content:'\e0bd'; }
+
+.oi[data-glyph=signpost]:before { content:'\e0be'; }
+
+.oi[data-glyph=sort-ascending]:before { content:'\e0bf'; }
+
+.oi[data-glyph=sort-descending]:before { content:'\e0c0'; }
+
+.oi[data-glyph=spreadsheet]:before { content:'\e0c1'; }
+
+.oi[data-glyph=star]:before { content:'\e0c2'; }
+
+.oi[data-glyph=sun]:before { content:'\e0c3'; }
+
+.oi[data-glyph=tablet]:before { content:'\e0c4'; }
+
+.oi[data-glyph=tag]:before { content:'\e0c5'; }
+
+.oi[data-glyph=tags]:before { content:'\e0c6'; }
+
+.oi[data-glyph=target]:before { content:'\e0c7'; }
+
+.oi[data-glyph=task]:before { content:'\e0c8'; }
+
+.oi[data-glyph=terminal]:before { content:'\e0c9'; }
+
+.oi[data-glyph=text]:before { content:'\e0ca'; }
+
+.oi[data-glyph=thumb-down]:before { content:'\e0cb'; }
+
+.oi[data-glyph=thumb-up]:before { content:'\e0cc'; }
+
+.oi[data-glyph=timer]:before { content:'\e0cd'; }
+
+.oi[data-glyph=transfer]:before { content:'\e0ce'; }
+
+.oi[data-glyph=trash]:before { content:'\e0cf'; }
+
+.oi[data-glyph=underline]:before { content:'\e0d0'; }
+
+.oi[data-glyph=vertical-align-bottom]:before { content:'\e0d1'; }
+
+.oi[data-glyph=vertical-align-center]:before { content:'\e0d2'; }
+
+.oi[data-glyph=vertical-align-top]:before { content:'\e0d3'; }
+
+.oi[data-glyph=video]:before { content:'\e0d4'; }
+
+.oi[data-glyph=volume-high]:before { content:'\e0d5'; }
+
+.oi[data-glyph=volume-low]:before { content:'\e0d6'; }
+
+.oi[data-glyph=volume-off]:before { content:'\e0d7'; }
+
+.oi[data-glyph=warning]:before { content:'\e0d8'; }
+
+.oi[data-glyph=wifi]:before { content:'\e0d9'; }
+
+.oi[data-glyph=wrench]:before { content:'\e0da'; }
+
+.oi[data-glyph=x]:before { content:'\e0db'; }
+
+.oi[data-glyph=yen]:before { content:'\e0dc'; }
+
+.oi[data-glyph=zoom-in]:before { content:'\e0dd'; }
+
+.oi[data-glyph=zoom-out]:before { content:'\e0de'; }
diff --git a/public/font/css/open-iconic.less b/public/font/css/open-iconic.less
new file mode 100644
index 0000000..d505e9f
--- /dev/null
+++ b/public/font/css/open-iconic.less
@@ -0,0 +1,962 @@
+@iconic-font-path: '../fonts/';
+
+@font-face {
+ font-family: 'Icons';
+ src: url('@{iconic-font-path}open-iconic.eot');
+ src: url('@{iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('@{iconic-font-path}open-iconic.woff') format('woff'), url('@{iconic-font-path}open-iconic.ttf') format('truetype'), url('@{iconic-font-path}open-iconic.otf') format('opentype'), url('@{iconic-font-path}open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.oi[data-glyph].oi-text-replace {
+ font-size: 0;
+ line-height: 0;
+}
+
+.oi[data-glyph].oi-text-replace:before {
+ width: 1em;
+ text-align: center;
+}
+
+.oi[data-glyph] {
+ &:before {
+ position: relative;
+ top: 1px;
+ font-family: 'Icons';
+ display: inline-block;
+ speak: none;
+ line-height: 1;
+ vertical-align: baseline;
+ font-weight: normal;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ &:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+ }
+
+ &.oi-align-left:before {
+ text-align: left;
+ }
+ &.oi-align-right:before {
+ text-align: right;
+ }
+ &.oi-align-center:before {
+ text-align: center;
+ }
+
+ &.oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+ }
+
+ &.oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+ }
+
+ &.oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+ }
+}
+
+
+.oi[data-glyph=account-login]:before {
+ content: '\e000';
+}
+
+.oi[data-glyph=account-logout]:before {
+ content: '\e001';
+}
+
+.oi[data-glyph=action-redo]:before {
+ content: '\e002';
+}
+
+.oi[data-glyph=action-undo]:before {
+ content: '\e003';
+}
+
+.oi[data-glyph=align-center]:before {
+ content: '\e004';
+}
+
+.oi[data-glyph=align-left]:before {
+ content: '\e005';
+}
+
+.oi[data-glyph=align-right]:before {
+ content: '\e006';
+}
+
+.oi[data-glyph=aperture]:before {
+ content: '\e007';
+}
+
+.oi[data-glyph=arrow-bottom]:before {
+ content: '\e008';
+}
+
+.oi[data-glyph=arrow-circle-bottom]:before {
+ content: '\e009';
+}
+
+.oi[data-glyph=arrow-circle-left]:before {
+ content: '\e00a';
+}
+
+.oi[data-glyph=arrow-circle-right]:before {
+ content: '\e00b';
+}
+
+.oi[data-glyph=arrow-circle-top]:before {
+ content: '\e00c';
+}
+
+.oi[data-glyph=arrow-left]:before {
+ content: '\e00d';
+}
+
+.oi[data-glyph=arrow-right]:before {
+ content: '\e00e';
+}
+
+.oi[data-glyph=arrow-thick-bottom]:before {
+ content: '\e00f';
+}
+
+.oi[data-glyph=arrow-thick-left]:before {
+ content: '\e010';
+}
+
+.oi[data-glyph=arrow-thick-right]:before {
+ content: '\e011';
+}
+
+.oi[data-glyph=arrow-thick-top]:before {
+ content: '\e012';
+}
+
+.oi[data-glyph=arrow-top]:before {
+ content: '\e013';
+}
+
+.oi[data-glyph=audio-spectrum]:before {
+ content: '\e014';
+}
+
+.oi[data-glyph=audio]:before {
+ content: '\e015';
+}
+
+.oi[data-glyph=badge]:before {
+ content: '\e016';
+}
+
+.oi[data-glyph=ban]:before {
+ content: '\e017';
+}
+
+.oi[data-glyph=bar-chart]:before {
+ content: '\e018';
+}
+
+.oi[data-glyph=basket]:before {
+ content: '\e019';
+}
+
+.oi[data-glyph=battery-empty]:before {
+ content: '\e01a';
+}
+
+.oi[data-glyph=battery-full]:before {
+ content: '\e01b';
+}
+
+.oi[data-glyph=beaker]:before {
+ content: '\e01c';
+}
+
+.oi[data-glyph=bell]:before {
+ content: '\e01d';
+}
+
+.oi[data-glyph=bluetooth]:before {
+ content: '\e01e';
+}
+
+.oi[data-glyph=bold]:before {
+ content: '\e01f';
+}
+
+.oi[data-glyph=bolt]:before {
+ content: '\e020';
+}
+
+.oi[data-glyph=book]:before {
+ content: '\e021';
+}
+
+.oi[data-glyph=bookmark]:before {
+ content: '\e022';
+}
+
+.oi[data-glyph=box]:before {
+ content: '\e023';
+}
+
+.oi[data-glyph=briefcase]:before {
+ content: '\e024';
+}
+
+.oi[data-glyph=british-pound]:before {
+ content: '\e025';
+}
+
+.oi[data-glyph=browser]:before {
+ content: '\e026';
+}
+
+.oi[data-glyph=brush]:before {
+ content: '\e027';
+}
+
+.oi[data-glyph=bug]:before {
+ content: '\e028';
+}
+
+.oi[data-glyph=bullhorn]:before {
+ content: '\e029';
+}
+
+.oi[data-glyph=calculator]:before {
+ content: '\e02a';
+}
+
+.oi[data-glyph=calendar]:before {
+ content: '\e02b';
+}
+
+.oi[data-glyph=camera-slr]:before {
+ content: '\e02c';
+}
+
+.oi[data-glyph=caret-bottom]:before {
+ content: '\e02d';
+}
+
+.oi[data-glyph=caret-left]:before {
+ content: '\e02e';
+}
+
+.oi[data-glyph=caret-right]:before {
+ content: '\e02f';
+}
+
+.oi[data-glyph=caret-top]:before {
+ content: '\e030';
+}
+
+.oi[data-glyph=cart]:before {
+ content: '\e031';
+}
+
+.oi[data-glyph=chat]:before {
+ content: '\e032';
+}
+
+.oi[data-glyph=check]:before {
+ content: '\e033';
+}
+
+.oi[data-glyph=chevron-bottom]:before {
+ content: '\e034';
+}
+
+.oi[data-glyph=chevron-left]:before {
+ content: '\e035';
+}
+
+.oi[data-glyph=chevron-right]:before {
+ content: '\e036';
+}
+
+.oi[data-glyph=chevron-top]:before {
+ content: '\e037';
+}
+
+.oi[data-glyph=circle-check]:before {
+ content: '\e038';
+}
+
+.oi[data-glyph=circle-x]:before {
+ content: '\e039';
+}
+
+.oi[data-glyph=clipboard]:before {
+ content: '\e03a';
+}
+
+.oi[data-glyph=clock]:before {
+ content: '\e03b';
+}
+
+.oi[data-glyph=cloud-download]:before {
+ content: '\e03c';
+}
+
+.oi[data-glyph=cloud-upload]:before {
+ content: '\e03d';
+}
+
+.oi[data-glyph=cloud]:before {
+ content: '\e03e';
+}
+
+.oi[data-glyph=cloudy]:before {
+ content: '\e03f';
+}
+
+.oi[data-glyph=code]:before {
+ content: '\e040';
+}
+
+.oi[data-glyph=cog]:before {
+ content: '\e041';
+}
+
+.oi[data-glyph=collapse-down]:before {
+ content: '\e042';
+}
+
+.oi[data-glyph=collapse-left]:before {
+ content: '\e043';
+}
+
+.oi[data-glyph=collapse-right]:before {
+ content: '\e044';
+}
+
+.oi[data-glyph=collapse-up]:before {
+ content: '\e045';
+}
+
+.oi[data-glyph=command]:before {
+ content: '\e046';
+}
+
+.oi[data-glyph=comment-square]:before {
+ content: '\e047';
+}
+
+.oi[data-glyph=compass]:before {
+ content: '\e048';
+}
+
+.oi[data-glyph=contrast]:before {
+ content: '\e049';
+}
+
+.oi[data-glyph=copywriting]:before {
+ content: '\e04a';
+}
+
+.oi[data-glyph=credit-card]:before {
+ content: '\e04b';
+}
+
+.oi[data-glyph=crop]:before {
+ content: '\e04c';
+}
+
+.oi[data-glyph=dashboard]:before {
+ content: '\e04d';
+}
+
+.oi[data-glyph=data-transfer-download]:before {
+ content: '\e04e';
+}
+
+.oi[data-glyph=data-transfer-upload]:before {
+ content: '\e04f';
+}
+
+.oi[data-glyph=delete]:before {
+ content: '\e050';
+}
+
+.oi[data-glyph=dial]:before {
+ content: '\e051';
+}
+
+.oi[data-glyph=document]:before {
+ content: '\e052';
+}
+
+.oi[data-glyph=dollar]:before {
+ content: '\e053';
+}
+
+.oi[data-glyph=double-quote-sans-left]:before {
+ content: '\e054';
+}
+
+.oi[data-glyph=double-quote-sans-right]:before {
+ content: '\e055';
+}
+
+.oi[data-glyph=double-quote-serif-left]:before {
+ content: '\e056';
+}
+
+.oi[data-glyph=double-quote-serif-right]:before {
+ content: '\e057';
+}
+
+.oi[data-glyph=droplet]:before {
+ content: '\e058';
+}
+
+.oi[data-glyph=eject]:before {
+ content: '\e059';
+}
+
+.oi[data-glyph=elevator]:before {
+ content: '\e05a';
+}
+
+.oi[data-glyph=ellipses]:before {
+ content: '\e05b';
+}
+
+.oi[data-glyph=envelope-closed]:before {
+ content: '\e05c';
+}
+
+.oi[data-glyph=envelope-open]:before {
+ content: '\e05d';
+}
+
+.oi[data-glyph=euro]:before {
+ content: '\e05e';
+}
+
+.oi[data-glyph=excerpt]:before {
+ content: '\e05f';
+}
+
+.oi[data-glyph=expand-down]:before {
+ content: '\e060';
+}
+
+.oi[data-glyph=expand-left]:before {
+ content: '\e061';
+}
+
+.oi[data-glyph=expand-right]:before {
+ content: '\e062';
+}
+
+.oi[data-glyph=expand-up]:before {
+ content: '\e063';
+}
+
+.oi[data-glyph=external-link]:before {
+ content: '\e064';
+}
+
+.oi[data-glyph=eye]:before {
+ content: '\e065';
+}
+
+.oi[data-glyph=eyedropper]:before {
+ content: '\e066';
+}
+
+.oi[data-glyph=file]:before {
+ content: '\e067';
+}
+
+.oi[data-glyph=fire]:before {
+ content: '\e068';
+}
+
+.oi[data-glyph=flag]:before {
+ content: '\e069';
+}
+
+.oi[data-glyph=flash]:before {
+ content: '\e06a';
+}
+
+.oi[data-glyph=folder]:before {
+ content: '\e06b';
+}
+
+.oi[data-glyph=fork]:before {
+ content: '\e06c';
+}
+
+.oi[data-glyph=fullscreen-enter]:before {
+ content: '\e06d';
+}
+
+.oi[data-glyph=fullscreen-exit]:before {
+ content: '\e06e';
+}
+
+.oi[data-glyph=globe]:before {
+ content: '\e06f';
+}
+
+.oi[data-glyph=graph]:before {
+ content: '\e070';
+}
+
+.oi[data-glyph=grid-four-up]:before {
+ content: '\e071';
+}
+
+.oi[data-glyph=grid-three-up]:before {
+ content: '\e072';
+}
+
+.oi[data-glyph=grid-two-up]:before {
+ content: '\e073';
+}
+
+.oi[data-glyph=hard-drive]:before {
+ content: '\e074';
+}
+
+.oi[data-glyph=header]:before {
+ content: '\e075';
+}
+
+.oi[data-glyph=headphones]:before {
+ content: '\e076';
+}
+
+.oi[data-glyph=heart]:before {
+ content: '\e077';
+}
+
+.oi[data-glyph=home]:before {
+ content: '\e078';
+}
+
+.oi[data-glyph=image]:before {
+ content: '\e079';
+}
+
+.oi[data-glyph=inbox]:before {
+ content: '\e07a';
+}
+
+.oi[data-glyph=infinity]:before {
+ content: '\e07b';
+}
+
+.oi[data-glyph=info]:before {
+ content: '\e07c';
+}
+
+.oi[data-glyph=italic]:before {
+ content: '\e07d';
+}
+
+.oi[data-glyph=justify-center]:before {
+ content: '\e07e';
+}
+
+.oi[data-glyph=justify-left]:before {
+ content: '\e07f';
+}
+
+.oi[data-glyph=justify-right]:before {
+ content: '\e080';
+}
+
+.oi[data-glyph=key]:before {
+ content: '\e081';
+}
+
+.oi[data-glyph=laptop]:before {
+ content: '\e082';
+}
+
+.oi[data-glyph=layers]:before {
+ content: '\e083';
+}
+
+.oi[data-glyph=lightbulb]:before {
+ content: '\e084';
+}
+
+.oi[data-glyph=link-broken]:before {
+ content: '\e085';
+}
+
+.oi[data-glyph=link-intact]:before {
+ content: '\e086';
+}
+
+.oi[data-glyph=list-rich]:before {
+ content: '\e087';
+}
+
+.oi[data-glyph=list]:before {
+ content: '\e088';
+}
+
+.oi[data-glyph=location]:before {
+ content: '\e089';
+}
+
+.oi[data-glyph=lock-locked]:before {
+ content: '\e08a';
+}
+
+.oi[data-glyph=lock-unlocked]:before {
+ content: '\e08b';
+}
+
+.oi[data-glyph=loop-circular]:before {
+ content: '\e08c';
+}
+
+.oi[data-glyph=loop-square]:before {
+ content: '\e08d';
+}
+
+.oi[data-glyph=loop]:before {
+ content: '\e08e';
+}
+
+.oi[data-glyph=magnifying-glass]:before {
+ content: '\e08f';
+}
+
+.oi[data-glyph=map-marker]:before {
+ content: '\e090';
+}
+
+.oi[data-glyph=map]:before {
+ content: '\e091';
+}
+
+.oi[data-glyph=media-pause]:before {
+ content: '\e092';
+}
+
+.oi[data-glyph=media-play]:before {
+ content: '\e093';
+}
+
+.oi[data-glyph=media-record]:before {
+ content: '\e094';
+}
+
+.oi[data-glyph=media-skip-backward]:before {
+ content: '\e095';
+}
+
+.oi[data-glyph=media-skip-forward]:before {
+ content: '\e096';
+}
+
+.oi[data-glyph=media-step-backward]:before {
+ content: '\e097';
+}
+
+.oi[data-glyph=media-step-forward]:before {
+ content: '\e098';
+}
+
+.oi[data-glyph=media-stop]:before {
+ content: '\e099';
+}
+
+.oi[data-glyph=medical-cross]:before {
+ content: '\e09a';
+}
+
+.oi[data-glyph=menu]:before {
+ content: '\e09b';
+}
+
+.oi[data-glyph=microphone]:before {
+ content: '\e09c';
+}
+
+.oi[data-glyph=minus]:before {
+ content: '\e09d';
+}
+
+.oi[data-glyph=monitor]:before {
+ content: '\e09e';
+}
+
+.oi[data-glyph=moon]:before {
+ content: '\e09f';
+}
+
+.oi[data-glyph=move]:before {
+ content: '\e0a0';
+}
+
+.oi[data-glyph=musical-note]:before {
+ content: '\e0a1';
+}
+
+.oi[data-glyph=paperclip]:before {
+ content: '\e0a2';
+}
+
+.oi[data-glyph=pencil]:before {
+ content: '\e0a3';
+}
+
+.oi[data-glyph=people]:before {
+ content: '\e0a4';
+}
+
+.oi[data-glyph=person]:before {
+ content: '\e0a5';
+}
+
+.oi[data-glyph=phone]:before {
+ content: '\e0a6';
+}
+
+.oi[data-glyph=pie-chart]:before {
+ content: '\e0a7';
+}
+
+.oi[data-glyph=pin]:before {
+ content: '\e0a8';
+}
+
+.oi[data-glyph=play-circle]:before {
+ content: '\e0a9';
+}
+
+.oi[data-glyph=plus]:before {
+ content: '\e0aa';
+}
+
+.oi[data-glyph=power-standby]:before {
+ content: '\e0ab';
+}
+
+.oi[data-glyph=print]:before {
+ content: '\e0ac';
+}
+
+.oi[data-glyph=project]:before {
+ content: '\e0ad';
+}
+
+.oi[data-glyph=pulse]:before {
+ content: '\e0ae';
+}
+
+.oi[data-glyph=puzzle-piece]:before {
+ content: '\e0af';
+}
+
+.oi[data-glyph=question-mark]:before {
+ content: '\e0b0';
+}
+
+.oi[data-glyph=rain]:before {
+ content: '\e0b1';
+}
+
+.oi[data-glyph=random]:before {
+ content: '\e0b2';
+}
+
+.oi[data-glyph=reload]:before {
+ content: '\e0b3';
+}
+
+.oi[data-glyph=resize-both]:before {
+ content: '\e0b4';
+}
+
+.oi[data-glyph=resize-height]:before {
+ content: '\e0b5';
+}
+
+.oi[data-glyph=resize-width]:before {
+ content: '\e0b6';
+}
+
+.oi[data-glyph=rss-alt]:before {
+ content: '\e0b7';
+}
+
+.oi[data-glyph=rss]:before {
+ content: '\e0b8';
+}
+
+.oi[data-glyph=script]:before {
+ content: '\e0b9';
+}
+
+.oi[data-glyph=share-boxed]:before {
+ content: '\e0ba';
+}
+
+.oi[data-glyph=share]:before {
+ content: '\e0bb';
+}
+
+.oi[data-glyph=shield]:before {
+ content: '\e0bc';
+}
+
+.oi[data-glyph=signal]:before {
+ content: '\e0bd';
+}
+
+.oi[data-glyph=signpost]:before {
+ content: '\e0be';
+}
+
+.oi[data-glyph=sort-ascending]:before {
+ content: '\e0bf';
+}
+
+.oi[data-glyph=sort-descending]:before {
+ content: '\e0c0';
+}
+
+.oi[data-glyph=spreadsheet]:before {
+ content: '\e0c1';
+}
+
+.oi[data-glyph=star]:before {
+ content: '\e0c2';
+}
+
+.oi[data-glyph=sun]:before {
+ content: '\e0c3';
+}
+
+.oi[data-glyph=tablet]:before {
+ content: '\e0c4';
+}
+
+.oi[data-glyph=tag]:before {
+ content: '\e0c5';
+}
+
+.oi[data-glyph=tags]:before {
+ content: '\e0c6';
+}
+
+.oi[data-glyph=target]:before {
+ content: '\e0c7';
+}
+
+.oi[data-glyph=task]:before {
+ content: '\e0c8';
+}
+
+.oi[data-glyph=terminal]:before {
+ content: '\e0c9';
+}
+
+.oi[data-glyph=text]:before {
+ content: '\e0ca';
+}
+
+.oi[data-glyph=thumb-down]:before {
+ content: '\e0cb';
+}
+
+.oi[data-glyph=thumb-up]:before {
+ content: '\e0cc';
+}
+
+.oi[data-glyph=timer]:before {
+ content: '\e0cd';
+}
+
+.oi[data-glyph=transfer]:before {
+ content: '\e0ce';
+}
+
+.oi[data-glyph=trash]:before {
+ content: '\e0cf';
+}
+
+.oi[data-glyph=underline]:before {
+ content: '\e0d0';
+}
+
+.oi[data-glyph=vertical-align-bottom]:before {
+ content: '\e0d1';
+}
+
+.oi[data-glyph=vertical-align-center]:before {
+ content: '\e0d2';
+}
+
+.oi[data-glyph=vertical-align-top]:before {
+ content: '\e0d3';
+}
+
+.oi[data-glyph=video]:before {
+ content: '\e0d4';
+}
+
+.oi[data-glyph=volume-high]:before {
+ content: '\e0d5';
+}
+
+.oi[data-glyph=volume-low]:before {
+ content: '\e0d6';
+}
+
+.oi[data-glyph=volume-off]:before {
+ content: '\e0d7';
+}
+
+.oi[data-glyph=warning]:before {
+ content: '\e0d8';
+}
+
+.oi[data-glyph=wifi]:before {
+ content: '\e0d9';
+}
+
+.oi[data-glyph=wrench]:before {
+ content: '\e0da';
+}
+
+.oi[data-glyph=x]:before {
+ content: '\e0db';
+}
+
+.oi[data-glyph=yen]:before {
+ content: '\e0dc';
+}
+
+.oi[data-glyph=zoom-in]:before {
+ content: '\e0dd';
+}
+
+.oi[data-glyph=zoom-out]:before {
+ content: '\e0de';
+}
diff --git a/public/font/css/open-iconic.min.css b/public/font/css/open-iconic.min.css
new file mode 100644
index 0000000..1f6afb8
--- /dev/null
+++ b/public/font/css/open-iconic.min.css
@@ -0,0 +1 @@
+@font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi[data-glyph].oi-text-replace{font-size:0;line-height:0}.oi[data-glyph].oi-text-replace:before{width:1em;text-align:center}.oi[data-glyph]:before{font-family:Icons;display:inline-block;speak:none;line-height:1;vertical-align:baseline;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi[data-glyph]:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi[data-glyph].oi-align-left:before{text-align:left}.oi[data-glyph].oi-align-right:before{text-align:right}.oi[data-glyph].oi-align-center:before{text-align:center}.oi[data-glyph].oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi[data-glyph].oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi[data-glyph].oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi[data-glyph=account-login]:before{content:'\e000'}.oi[data-glyph=account-logout]:before{content:'\e001'}.oi[data-glyph=action-redo]:before{content:'\e002'}.oi[data-glyph=action-undo]:before{content:'\e003'}.oi[data-glyph=align-center]:before{content:'\e004'}.oi[data-glyph=align-left]:before{content:'\e005'}.oi[data-glyph=align-right]:before{content:'\e006'}.oi[data-glyph=aperture]:before{content:'\e007'}.oi[data-glyph=arrow-bottom]:before{content:'\e008'}.oi[data-glyph=arrow-circle-bottom]:before{content:'\e009'}.oi[data-glyph=arrow-circle-left]:before{content:'\e00a'}.oi[data-glyph=arrow-circle-right]:before{content:'\e00b'}.oi[data-glyph=arrow-circle-top]:before{content:'\e00c'}.oi[data-glyph=arrow-left]:before{content:'\e00d'}.oi[data-glyph=arrow-right]:before{content:'\e00e'}.oi[data-glyph=arrow-thick-bottom]:before{content:'\e00f'}.oi[data-glyph=arrow-thick-left]:before{content:'\e010'}.oi[data-glyph=arrow-thick-right]:before{content:'\e011'}.oi[data-glyph=arrow-thick-top]:before{content:'\e012'}.oi[data-glyph=arrow-top]:before{content:'\e013'}.oi[data-glyph=audio-spectrum]:before{content:'\e014'}.oi[data-glyph=audio]:before{content:'\e015'}.oi[data-glyph=badge]:before{content:'\e016'}.oi[data-glyph=ban]:before{content:'\e017'}.oi[data-glyph=bar-chart]:before{content:'\e018'}.oi[data-glyph=basket]:before{content:'\e019'}.oi[data-glyph=battery-empty]:before{content:'\e01a'}.oi[data-glyph=battery-full]:before{content:'\e01b'}.oi[data-glyph=beaker]:before{content:'\e01c'}.oi[data-glyph=bell]:before{content:'\e01d'}.oi[data-glyph=bluetooth]:before{content:'\e01e'}.oi[data-glyph=bold]:before{content:'\e01f'}.oi[data-glyph=bolt]:before{content:'\e020'}.oi[data-glyph=book]:before{content:'\e021'}.oi[data-glyph=bookmark]:before{content:'\e022'}.oi[data-glyph=box]:before{content:'\e023'}.oi[data-glyph=briefcase]:before{content:'\e024'}.oi[data-glyph=british-pound]:before{content:'\e025'}.oi[data-glyph=browser]:before{content:'\e026'}.oi[data-glyph=brush]:before{content:'\e027'}.oi[data-glyph=bug]:before{content:'\e028'}.oi[data-glyph=bullhorn]:before{content:'\e029'}.oi[data-glyph=calculator]:before{content:'\e02a'}.oi[data-glyph=calendar]:before{content:'\e02b'}.oi[data-glyph=camera-slr]:before{content:'\e02c'}.oi[data-glyph=caret-bottom]:before{content:'\e02d'}.oi[data-glyph=caret-left]:before{content:'\e02e'}.oi[data-glyph=caret-right]:before{content:'\e02f'}.oi[data-glyph=caret-top]:before{content:'\e030'}.oi[data-glyph=cart]:before{content:'\e031'}.oi[data-glyph=chat]:before{content:'\e032'}.oi[data-glyph=check]:before{content:'\e033'}.oi[data-glyph=chevron-bottom]:before{content:'\e034'}.oi[data-glyph=chevron-left]:before{content:'\e035'}.oi[data-glyph=chevron-right]:before{content:'\e036'}.oi[data-glyph=chevron-top]:before{content:'\e037'}.oi[data-glyph=circle-check]:before{content:'\e038'}.oi[data-glyph=circle-x]:before{content:'\e039'}.oi[data-glyph=clipboard]:before{content:'\e03a'}.oi[data-glyph=clock]:before{content:'\e03b'}.oi[data-glyph=cloud-download]:before{content:'\e03c'}.oi[data-glyph=cloud-upload]:before{content:'\e03d'}.oi[data-glyph=cloud]:before{content:'\e03e'}.oi[data-glyph=cloudy]:before{content:'\e03f'}.oi[data-glyph=code]:before{content:'\e040'}.oi[data-glyph=cog]:before{content:'\e041'}.oi[data-glyph=collapse-down]:before{content:'\e042'}.oi[data-glyph=collapse-left]:before{content:'\e043'}.oi[data-glyph=collapse-right]:before{content:'\e044'}.oi[data-glyph=collapse-up]:before{content:'\e045'}.oi[data-glyph=command]:before{content:'\e046'}.oi[data-glyph=comment-square]:before{content:'\e047'}.oi[data-glyph=compass]:before{content:'\e048'}.oi[data-glyph=contrast]:before{content:'\e049'}.oi[data-glyph=copywriting]:before{content:'\e04a'}.oi[data-glyph=credit-card]:before{content:'\e04b'}.oi[data-glyph=crop]:before{content:'\e04c'}.oi[data-glyph=dashboard]:before{content:'\e04d'}.oi[data-glyph=data-transfer-download]:before{content:'\e04e'}.oi[data-glyph=data-transfer-upload]:before{content:'\e04f'}.oi[data-glyph=delete]:before{content:'\e050'}.oi[data-glyph=dial]:before{content:'\e051'}.oi[data-glyph=document]:before{content:'\e052'}.oi[data-glyph=dollar]:before{content:'\e053'}.oi[data-glyph=double-quote-sans-left]:before{content:'\e054'}.oi[data-glyph=double-quote-sans-right]:before{content:'\e055'}.oi[data-glyph=double-quote-serif-left]:before{content:'\e056'}.oi[data-glyph=double-quote-serif-right]:before{content:'\e057'}.oi[data-glyph=droplet]:before{content:'\e058'}.oi[data-glyph=eject]:before{content:'\e059'}.oi[data-glyph=elevator]:before{content:'\e05a'}.oi[data-glyph=ellipses]:before{content:'\e05b'}.oi[data-glyph=envelope-closed]:before{content:'\e05c'}.oi[data-glyph=envelope-open]:before{content:'\e05d'}.oi[data-glyph=euro]:before{content:'\e05e'}.oi[data-glyph=excerpt]:before{content:'\e05f'}.oi[data-glyph=expand-down]:before{content:'\e060'}.oi[data-glyph=expand-left]:before{content:'\e061'}.oi[data-glyph=expand-right]:before{content:'\e062'}.oi[data-glyph=expand-up]:before{content:'\e063'}.oi[data-glyph=external-link]:before{content:'\e064'}.oi[data-glyph=eye]:before{content:'\e065'}.oi[data-glyph=eyedropper]:before{content:'\e066'}.oi[data-glyph=file]:before{content:'\e067'}.oi[data-glyph=fire]:before{content:'\e068'}.oi[data-glyph=flag]:before{content:'\e069'}.oi[data-glyph=flash]:before{content:'\e06a'}.oi[data-glyph=folder]:before{content:'\e06b'}.oi[data-glyph=fork]:before{content:'\e06c'}.oi[data-glyph=fullscreen-enter]:before{content:'\e06d'}.oi[data-glyph=fullscreen-exit]:before{content:'\e06e'}.oi[data-glyph=globe]:before{content:'\e06f'}.oi[data-glyph=graph]:before{content:'\e070'}.oi[data-glyph=grid-four-up]:before{content:'\e071'}.oi[data-glyph=grid-three-up]:before{content:'\e072'}.oi[data-glyph=grid-two-up]:before{content:'\e073'}.oi[data-glyph=hard-drive]:before{content:'\e074'}.oi[data-glyph=header]:before{content:'\e075'}.oi[data-glyph=headphones]:before{content:'\e076'}.oi[data-glyph=heart]:before{content:'\e077'}.oi[data-glyph=home]:before{content:'\e078'}.oi[data-glyph=image]:before{content:'\e079'}.oi[data-glyph=inbox]:before{content:'\e07a'}.oi[data-glyph=infinity]:before{content:'\e07b'}.oi[data-glyph=info]:before{content:'\e07c'}.oi[data-glyph=italic]:before{content:'\e07d'}.oi[data-glyph=justify-center]:before{content:'\e07e'}.oi[data-glyph=justify-left]:before{content:'\e07f'}.oi[data-glyph=justify-right]:before{content:'\e080'}.oi[data-glyph=key]:before{content:'\e081'}.oi[data-glyph=laptop]:before{content:'\e082'}.oi[data-glyph=layers]:before{content:'\e083'}.oi[data-glyph=lightbulb]:before{content:'\e084'}.oi[data-glyph=link-broken]:before{content:'\e085'}.oi[data-glyph=link-intact]:before{content:'\e086'}.oi[data-glyph=list-rich]:before{content:'\e087'}.oi[data-glyph=list]:before{content:'\e088'}.oi[data-glyph=location]:before{content:'\e089'}.oi[data-glyph=lock-locked]:before{content:'\e08a'}.oi[data-glyph=lock-unlocked]:before{content:'\e08b'}.oi[data-glyph=loop-circular]:before{content:'\e08c'}.oi[data-glyph=loop-square]:before{content:'\e08d'}.oi[data-glyph=loop]:before{content:'\e08e'}.oi[data-glyph=magnifying-glass]:before{content:'\e08f'}.oi[data-glyph=map-marker]:before{content:'\e090'}.oi[data-glyph=map]:before{content:'\e091'}.oi[data-glyph=media-pause]:before{content:'\e092'}.oi[data-glyph=media-play]:before{content:'\e093'}.oi[data-glyph=media-record]:before{content:'\e094'}.oi[data-glyph=media-skip-backward]:before{content:'\e095'}.oi[data-glyph=media-skip-forward]:before{content:'\e096'}.oi[data-glyph=media-step-backward]:before{content:'\e097'}.oi[data-glyph=media-step-forward]:before{content:'\e098'}.oi[data-glyph=media-stop]:before{content:'\e099'}.oi[data-glyph=medical-cross]:before{content:'\e09a'}.oi[data-glyph=menu]:before{content:'\e09b'}.oi[data-glyph=microphone]:before{content:'\e09c'}.oi[data-glyph=minus]:before{content:'\e09d'}.oi[data-glyph=monitor]:before{content:'\e09e'}.oi[data-glyph=moon]:before{content:'\e09f'}.oi[data-glyph=move]:before{content:'\e0a0'}.oi[data-glyph=musical-note]:before{content:'\e0a1'}.oi[data-glyph=paperclip]:before{content:'\e0a2'}.oi[data-glyph=pencil]:before{content:'\e0a3'}.oi[data-glyph=people]:before{content:'\e0a4'}.oi[data-glyph=person]:before{content:'\e0a5'}.oi[data-glyph=phone]:before{content:'\e0a6'}.oi[data-glyph=pie-chart]:before{content:'\e0a7'}.oi[data-glyph=pin]:before{content:'\e0a8'}.oi[data-glyph=play-circle]:before{content:'\e0a9'}.oi[data-glyph=plus]:before{content:'\e0aa'}.oi[data-glyph=power-standby]:before{content:'\e0ab'}.oi[data-glyph=print]:before{content:'\e0ac'}.oi[data-glyph=project]:before{content:'\e0ad'}.oi[data-glyph=pulse]:before{content:'\e0ae'}.oi[data-glyph=puzzle-piece]:before{content:'\e0af'}.oi[data-glyph=question-mark]:before{content:'\e0b0'}.oi[data-glyph=rain]:before{content:'\e0b1'}.oi[data-glyph=random]:before{content:'\e0b2'}.oi[data-glyph=reload]:before{content:'\e0b3'}.oi[data-glyph=resize-both]:before{content:'\e0b4'}.oi[data-glyph=resize-height]:before{content:'\e0b5'}.oi[data-glyph=resize-width]:before{content:'\e0b6'}.oi[data-glyph=rss-alt]:before{content:'\e0b7'}.oi[data-glyph=rss]:before{content:'\e0b8'}.oi[data-glyph=script]:before{content:'\e0b9'}.oi[data-glyph=share-boxed]:before{content:'\e0ba'}.oi[data-glyph=share]:before{content:'\e0bb'}.oi[data-glyph=shield]:before{content:'\e0bc'}.oi[data-glyph=signal]:before{content:'\e0bd'}.oi[data-glyph=signpost]:before{content:'\e0be'}.oi[data-glyph=sort-ascending]:before{content:'\e0bf'}.oi[data-glyph=sort-descending]:before{content:'\e0c0'}.oi[data-glyph=spreadsheet]:before{content:'\e0c1'}.oi[data-glyph=star]:before{content:'\e0c2'}.oi[data-glyph=sun]:before{content:'\e0c3'}.oi[data-glyph=tablet]:before{content:'\e0c4'}.oi[data-glyph=tag]:before{content:'\e0c5'}.oi[data-glyph=tags]:before{content:'\e0c6'}.oi[data-glyph=target]:before{content:'\e0c7'}.oi[data-glyph=task]:before{content:'\e0c8'}.oi[data-glyph=terminal]:before{content:'\e0c9'}.oi[data-glyph=text]:before{content:'\e0ca'}.oi[data-glyph=thumb-down]:before{content:'\e0cb'}.oi[data-glyph=thumb-up]:before{content:'\e0cc'}.oi[data-glyph=timer]:before{content:'\e0cd'}.oi[data-glyph=transfer]:before{content:'\e0ce'}.oi[data-glyph=trash]:before{content:'\e0cf'}.oi[data-glyph=underline]:before{content:'\e0d0'}.oi[data-glyph=vertical-align-bottom]:before{content:'\e0d1'}.oi[data-glyph=vertical-align-center]:before{content:'\e0d2'}.oi[data-glyph=vertical-align-top]:before{content:'\e0d3'}.oi[data-glyph=video]:before{content:'\e0d4'}.oi[data-glyph=volume-high]:before{content:'\e0d5'}.oi[data-glyph=volume-low]:before{content:'\e0d6'}.oi[data-glyph=volume-off]:before{content:'\e0d7'}.oi[data-glyph=warning]:before{content:'\e0d8'}.oi[data-glyph=wifi]:before{content:'\e0d9'}.oi[data-glyph=wrench]:before{content:'\e0da'}.oi[data-glyph=x]:before{content:'\e0db'}.oi[data-glyph=yen]:before{content:'\e0dc'}.oi[data-glyph=zoom-in]:before{content:'\e0dd'}.oi[data-glyph=zoom-out]:before{content:'\e0de'}
\ No newline at end of file
diff --git a/public/font/css/open-iconic.scss b/public/font/css/open-iconic.scss
new file mode 100644
index 0000000..e03d979
--- /dev/null
+++ b/public/font/css/open-iconic.scss
@@ -0,0 +1,963 @@
+$iconic-font-path: '../fonts/' !default;
+
+@font-face {
+ font-family: 'Icons';
+ src: url('#{$iconic-font-path}open-iconic.eot');
+ src: url('#{$iconic-font-path}open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('#{$iconic-font-path}open-iconic.woff') format('woff'), url('#{$iconic-font-path}open-iconic.ttf') format('truetype'), url('#{$iconic-font-path}open-iconic.otf') format('opentype'), url('#{$iconic-font-path}open-iconic.svg#iconic-sm') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.oi[data-glyph].oi-text-replace {
+ font-size: 0;
+ line-height: 0;
+}
+
+.oi[data-glyph].oi-text-replace:before {
+ width: 1em;
+ text-align: center;
+}
+
+.oi[data-glyph] {
+ &:before {
+ position: relative;
+ top: 1px;
+ font-family: 'Icons';
+ display: inline-block;
+ speak: none;
+ line-height: 1;
+ vertical-align: baseline;
+ font-weight: normal;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ &:empty:before {
+ width: 1em;
+ text-align: center;
+ box-sizing: content-box;
+ }
+
+ &.oi-align-left:before {
+ text-align: left;
+ }
+ &.oi-align-right:before {
+ text-align: right;
+ }
+ &.oi-align-center:before {
+ text-align: center;
+ }
+
+ &.oi-flip-horizontal:before {
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+ }
+
+ &.oi-flip-vertical:before {
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(1, -1);
+ }
+
+ &.oi-flip-horizontal-vertical:before {
+ -webkit-transform: scale(-1, -1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, -1);
+ }
+}
+
+
+.oi[data-glyph=account-login]:before {
+ content: '\e000';
+}
+
+.oi[data-glyph=account-logout]:before {
+ content: '\e001';
+}
+
+.oi[data-glyph=action-redo]:before {
+ content: '\e002';
+}
+
+.oi[data-glyph=action-undo]:before {
+ content: '\e003';
+}
+
+.oi[data-glyph=align-center]:before {
+ content: '\e004';
+}
+
+.oi[data-glyph=align-left]:before {
+ content: '\e005';
+}
+
+.oi[data-glyph=align-right]:before {
+ content: '\e006';
+}
+
+.oi[data-glyph=aperture]:before {
+ content: '\e007';
+}
+
+.oi[data-glyph=arrow-bottom]:before {
+ content: '\e008';
+}
+
+.oi[data-glyph=arrow-circle-bottom]:before {
+ content: '\e009';
+}
+
+.oi[data-glyph=arrow-circle-left]:before {
+ content: '\e00a';
+}
+
+.oi[data-glyph=arrow-circle-right]:before {
+ content: '\e00b';
+}
+
+.oi[data-glyph=arrow-circle-top]:before {
+ content: '\e00c';
+}
+
+.oi[data-glyph=arrow-left]:before {
+ content: '\e00d';
+}
+
+.oi[data-glyph=arrow-right]:before {
+ content: '\e00e';
+}
+
+.oi[data-glyph=arrow-thick-bottom]:before {
+ content: '\e00f';
+}
+
+.oi[data-glyph=arrow-thick-left]:before {
+ content: '\e010';
+}
+
+.oi[data-glyph=arrow-thick-right]:before {
+ content: '\e011';
+}
+
+.oi[data-glyph=arrow-thick-top]:before {
+ content: '\e012';
+}
+
+.oi[data-glyph=arrow-top]:before {
+ content: '\e013';
+}
+
+.oi[data-glyph=audio-spectrum]:before {
+ content: '\e014';
+}
+
+.oi[data-glyph=audio]:before {
+ content: '\e015';
+}
+
+.oi[data-glyph=badge]:before {
+ content: '\e016';
+}
+
+.oi[data-glyph=ban]:before {
+ content: '\e017';
+}
+
+.oi[data-glyph=bar-chart]:before {
+ content: '\e018';
+}
+
+.oi[data-glyph=basket]:before {
+ content: '\e019';
+}
+
+.oi[data-glyph=battery-empty]:before {
+ content: '\e01a';
+}
+
+.oi[data-glyph=battery-full]:before {
+ content: '\e01b';
+}
+
+.oi[data-glyph=beaker]:before {
+ content: '\e01c';
+}
+
+.oi[data-glyph=bell]:before {
+ content: '\e01d';
+}
+
+.oi[data-glyph=bluetooth]:before {
+ content: '\e01e';
+}
+
+.oi[data-glyph=bold]:before {
+ content: '\e01f';
+}
+
+.oi[data-glyph=bolt]:before {
+ content: '\e020';
+}
+
+.oi[data-glyph=book]:before {
+ content: '\e021';
+}
+
+.oi[data-glyph=bookmark]:before {
+ content: '\e022';
+}
+
+.oi[data-glyph=box]:before {
+ content: '\e023';
+}
+
+.oi[data-glyph=briefcase]:before {
+ content: '\e024';
+}
+
+.oi[data-glyph=british-pound]:before {
+ content: '\e025';
+}
+
+.oi[data-glyph=browser]:before {
+ content: '\e026';
+}
+
+.oi[data-glyph=brush]:before {
+ content: '\e027';
+}
+
+.oi[data-glyph=bug]:before {
+ content: '\e028';
+}
+
+.oi[data-glyph=bullhorn]:before {
+ content: '\e029';
+}
+
+.oi[data-glyph=calculator]:before {
+ content: '\e02a';
+}
+
+.oi[data-glyph=calendar]:before {
+ content: '\e02b';
+}
+
+.oi[data-glyph=camera-slr]:before {
+ content: '\e02c';
+}
+
+.oi[data-glyph=caret-bottom]:before {
+ content: '\e02d';
+}
+
+.oi[data-glyph=caret-left]:before {
+ content: '\e02e';
+}
+
+.oi[data-glyph=caret-right]:before {
+ content: '\e02f';
+}
+
+.oi[data-glyph=caret-top]:before {
+ content: '\e030';
+}
+
+.oi[data-glyph=cart]:before {
+ content: '\e031';
+}
+
+.oi[data-glyph=chat]:before {
+ content: '\e032';
+}
+
+.oi[data-glyph=check]:before {
+ content: '\e033';
+}
+
+.oi[data-glyph=chevron-bottom]:before {
+ content: '\e034';
+}
+
+.oi[data-glyph=chevron-left]:before {
+ content: '\e035';
+}
+
+.oi[data-glyph=chevron-right]:before {
+ content: '\e036';
+}
+
+.oi[data-glyph=chevron-top]:before {
+ content: '\e037';
+}
+
+.oi[data-glyph=circle-check]:before {
+ content: '\e038';
+}
+
+.oi[data-glyph=circle-x]:before {
+ content: '\e039';
+}
+
+.oi[data-glyph=clipboard]:before {
+ content: '\e03a';
+}
+
+.oi[data-glyph=clock]:before {
+ content: '\e03b';
+}
+
+.oi[data-glyph=cloud-download]:before {
+ content: '\e03c';
+}
+
+.oi[data-glyph=cloud-upload]:before {
+ content: '\e03d';
+}
+
+.oi[data-glyph=cloud]:before {
+ content: '\e03e';
+}
+
+.oi[data-glyph=cloudy]:before {
+ content: '\e03f';
+}
+
+.oi[data-glyph=code]:before {
+ content: '\e040';
+}
+
+.oi[data-glyph=cog]:before {
+ content: '\e041';
+}
+
+.oi[data-glyph=collapse-down]:before {
+ content: '\e042';
+}
+
+.oi[data-glyph=collapse-left]:before {
+ content: '\e043';
+}
+
+.oi[data-glyph=collapse-right]:before {
+ content: '\e044';
+}
+
+.oi[data-glyph=collapse-up]:before {
+ content: '\e045';
+}
+
+.oi[data-glyph=command]:before {
+ content: '\e046';
+}
+
+.oi[data-glyph=comment-square]:before {
+ content: '\e047';
+}
+
+.oi[data-glyph=compass]:before {
+ content: '\e048';
+}
+
+.oi[data-glyph=contrast]:before {
+ content: '\e049';
+}
+
+.oi[data-glyph=copywriting]:before {
+ content: '\e04a';
+}
+
+.oi[data-glyph=credit-card]:before {
+ content: '\e04b';
+}
+
+.oi[data-glyph=crop]:before {
+ content: '\e04c';
+}
+
+.oi[data-glyph=dashboard]:before {
+ content: '\e04d';
+}
+
+.oi[data-glyph=data-transfer-download]:before {
+ content: '\e04e';
+}
+
+.oi[data-glyph=data-transfer-upload]:before {
+ content: '\e04f';
+}
+
+.oi[data-glyph=delete]:before {
+ content: '\e050';
+}
+
+.oi[data-glyph=dial]:before {
+ content: '\e051';
+}
+
+.oi[data-glyph=document]:before {
+ content: '\e052';
+}
+
+.oi[data-glyph=dollar]:before {
+ content: '\e053';
+}
+
+.oi[data-glyph=double-quote-sans-left]:before {
+ content: '\e054';
+}
+
+.oi[data-glyph=double-quote-sans-right]:before {
+ content: '\e055';
+}
+
+.oi[data-glyph=double-quote-serif-left]:before {
+ content: '\e056';
+}
+
+.oi[data-glyph=double-quote-serif-right]:before {
+ content: '\e057';
+}
+
+.oi[data-glyph=droplet]:before {
+ content: '\e058';
+}
+
+.oi[data-glyph=eject]:before {
+ content: '\e059';
+}
+
+.oi[data-glyph=elevator]:before {
+ content: '\e05a';
+}
+
+.oi[data-glyph=ellipses]:before {
+ content: '\e05b';
+}
+
+.oi[data-glyph=envelope-closed]:before {
+ content: '\e05c';
+}
+
+.oi[data-glyph=envelope-open]:before {
+ content: '\e05d';
+}
+
+.oi[data-glyph=euro]:before {
+ content: '\e05e';
+}
+
+.oi[data-glyph=excerpt]:before {
+ content: '\e05f';
+}
+
+.oi[data-glyph=expand-down]:before {
+ content: '\e060';
+}
+
+.oi[data-glyph=expand-left]:before {
+ content: '\e061';
+}
+
+.oi[data-glyph=expand-right]:before {
+ content: '\e062';
+}
+
+.oi[data-glyph=expand-up]:before {
+ content: '\e063';
+}
+
+.oi[data-glyph=external-link]:before {
+ content: '\e064';
+}
+
+.oi[data-glyph=eye]:before {
+ content: '\e065';
+}
+
+.oi[data-glyph=eyedropper]:before {
+ content: '\e066';
+}
+
+.oi[data-glyph=file]:before {
+ content: '\e067';
+}
+
+.oi[data-glyph=fire]:before {
+ content: '\e068';
+}
+
+.oi[data-glyph=flag]:before {
+ content: '\e069';
+}
+
+.oi[data-glyph=flash]:before {
+ content: '\e06a';
+}
+
+.oi[data-glyph=folder]:before {
+ content: '\e06b';
+}
+
+.oi[data-glyph=fork]:before {
+ content: '\e06c';
+}
+
+.oi[data-glyph=fullscreen-enter]:before {
+ content: '\e06d';
+}
+
+.oi[data-glyph=fullscreen-exit]:before {
+ content: '\e06e';
+}
+
+.oi[data-glyph=globe]:before {
+ content: '\e06f';
+}
+
+.oi[data-glyph=graph]:before {
+ content: '\e070';
+}
+
+.oi[data-glyph=grid-four-up]:before {
+ content: '\e071';
+}
+
+.oi[data-glyph=grid-three-up]:before {
+ content: '\e072';
+}
+
+.oi[data-glyph=grid-two-up]:before {
+ content: '\e073';
+}
+
+.oi[data-glyph=hard-drive]:before {
+ content: '\e074';
+}
+
+.oi[data-glyph=header]:before {
+ content: '\e075';
+}
+
+.oi[data-glyph=headphones]:before {
+ content: '\e076';
+}
+
+.oi[data-glyph=heart]:before {
+ content: '\e077';
+}
+
+.oi[data-glyph=home]:before {
+ content: '\e078';
+}
+
+.oi[data-glyph=image]:before {
+ content: '\e079';
+}
+
+.oi[data-glyph=inbox]:before {
+ content: '\e07a';
+}
+
+.oi[data-glyph=infinity]:before {
+ content: '\e07b';
+}
+
+.oi[data-glyph=info]:before {
+ content: '\e07c';
+}
+
+.oi[data-glyph=italic]:before {
+ content: '\e07d';
+}
+
+.oi[data-glyph=justify-center]:before {
+ content: '\e07e';
+}
+
+.oi[data-glyph=justify-left]:before {
+ content: '\e07f';
+}
+
+.oi[data-glyph=justify-right]:before {
+ content: '\e080';
+}
+
+.oi[data-glyph=key]:before {
+ content: '\e081';
+}
+
+.oi[data-glyph=laptop]:before {
+ content: '\e082';
+}
+
+.oi[data-glyph=layers]:before {
+ content: '\e083';
+}
+
+.oi[data-glyph=lightbulb]:before {
+ content: '\e084';
+}
+
+.oi[data-glyph=link-broken]:before {
+ content: '\e085';
+}
+
+.oi[data-glyph=link-intact]:before {
+ content: '\e086';
+}
+
+.oi[data-glyph=list-rich]:before {
+ content: '\e087';
+}
+
+.oi[data-glyph=list]:before {
+ content: '\e088';
+}
+
+.oi[data-glyph=location]:before {
+ content: '\e089';
+}
+
+.oi[data-glyph=lock-locked]:before {
+ content: '\e08a';
+}
+
+.oi[data-glyph=lock-unlocked]:before {
+ content: '\e08b';
+}
+
+.oi[data-glyph=loop-circular]:before {
+ content: '\e08c';
+}
+
+.oi[data-glyph=loop-square]:before {
+ content: '\e08d';
+}
+
+.oi[data-glyph=loop]:before {
+ content: '\e08e';
+}
+
+.oi[data-glyph=magnifying-glass]:before {
+ content: '\e08f';
+}
+
+.oi[data-glyph=map-marker]:before {
+ content: '\e090';
+}
+
+.oi[data-glyph=map]:before {
+ content: '\e091';
+}
+
+.oi[data-glyph=media-pause]:before {
+ content: '\e092';
+}
+
+.oi[data-glyph=media-play]:before {
+ content: '\e093';
+}
+
+.oi[data-glyph=media-record]:before {
+ content: '\e094';
+}
+
+.oi[data-glyph=media-skip-backward]:before {
+ content: '\e095';
+}
+
+.oi[data-glyph=media-skip-forward]:before {
+ content: '\e096';
+}
+
+.oi[data-glyph=media-step-backward]:before {
+ content: '\e097';
+}
+
+.oi[data-glyph=media-step-forward]:before {
+ content: '\e098';
+}
+
+.oi[data-glyph=media-stop]:before {
+ content: '\e099';
+}
+
+.oi[data-glyph=medical-cross]:before {
+ content: '\e09a';
+}
+
+.oi[data-glyph=menu]:before {
+ content: '\e09b';
+}
+
+.oi[data-glyph=microphone]:before {
+ content: '\e09c';
+}
+
+.oi[data-glyph=minus]:before {
+ content: '\e09d';
+}
+
+.oi[data-glyph=monitor]:before {
+ content: '\e09e';
+}
+
+.oi[data-glyph=moon]:before {
+ content: '\e09f';
+}
+
+.oi[data-glyph=move]:before {
+ content: '\e0a0';
+}
+
+.oi[data-glyph=musical-note]:before {
+ content: '\e0a1';
+}
+
+.oi[data-glyph=paperclip]:before {
+ content: '\e0a2';
+}
+
+.oi[data-glyph=pencil]:before {
+ content: '\e0a3';
+}
+
+.oi[data-glyph=people]:before {
+ content: '\e0a4';
+}
+
+.oi[data-glyph=person]:before {
+ content: '\e0a5';
+}
+
+.oi[data-glyph=phone]:before {
+ content: '\e0a6';
+}
+
+.oi[data-glyph=pie-chart]:before {
+ content: '\e0a7';
+}
+
+.oi[data-glyph=pin]:before {
+ content: '\e0a8';
+}
+
+.oi[data-glyph=play-circle]:before {
+ content: '\e0a9';
+}
+
+.oi[data-glyph=plus]:before {
+ content: '\e0aa';
+}
+
+.oi[data-glyph=power-standby]:before {
+ content: '\e0ab';
+}
+
+.oi[data-glyph=print]:before {
+ content: '\e0ac';
+}
+
+.oi[data-glyph=project]:before {
+ content: '\e0ad';
+}
+
+.oi[data-glyph=pulse]:before {
+ content: '\e0ae';
+}
+
+.oi[data-glyph=puzzle-piece]:before {
+ content: '\e0af';
+}
+
+.oi[data-glyph=question-mark]:before {
+ content: '\e0b0';
+}
+
+.oi[data-glyph=rain]:before {
+ content: '\e0b1';
+}
+
+.oi[data-glyph=random]:before {
+ content: '\e0b2';
+}
+
+.oi[data-glyph=reload]:before {
+ content: '\e0b3';
+}
+
+.oi[data-glyph=resize-both]:before {
+ content: '\e0b4';
+}
+
+.oi[data-glyph=resize-height]:before {
+ content: '\e0b5';
+}
+
+.oi[data-glyph=resize-width]:before {
+ content: '\e0b6';
+}
+
+.oi[data-glyph=rss-alt]:before {
+ content: '\e0b7';
+}
+
+.oi[data-glyph=rss]:before {
+ content: '\e0b8';
+}
+
+.oi[data-glyph=script]:before {
+ content: '\e0b9';
+}
+
+.oi[data-glyph=share-boxed]:before {
+ content: '\e0ba';
+}
+
+.oi[data-glyph=share]:before {
+ content: '\e0bb';
+}
+
+.oi[data-glyph=shield]:before {
+ content: '\e0bc';
+}
+
+.oi[data-glyph=signal]:before {
+ content: '\e0bd';
+}
+
+.oi[data-glyph=signpost]:before {
+ content: '\e0be';
+}
+
+.oi[data-glyph=sort-ascending]:before {
+ content: '\e0bf';
+}
+
+.oi[data-glyph=sort-descending]:before {
+ content: '\e0c0';
+}
+
+.oi[data-glyph=spreadsheet]:before {
+ content: '\e0c1';
+}
+
+.oi[data-glyph=star]:before {
+ content: '\e0c2';
+}
+
+.oi[data-glyph=sun]:before {
+ content: '\e0c3';
+}
+
+.oi[data-glyph=tablet]:before {
+ content: '\e0c4';
+}
+
+.oi[data-glyph=tag]:before {
+ content: '\e0c5';
+}
+
+.oi[data-glyph=tags]:before {
+ content: '\e0c6';
+}
+
+.oi[data-glyph=target]:before {
+ content: '\e0c7';
+}
+
+.oi[data-glyph=task]:before {
+ content: '\e0c8';
+}
+
+.oi[data-glyph=terminal]:before {
+ content: '\e0c9';
+}
+
+.oi[data-glyph=text]:before {
+ content: '\e0ca';
+}
+
+.oi[data-glyph=thumb-down]:before {
+ content: '\e0cb';
+}
+
+.oi[data-glyph=thumb-up]:before {
+ content: '\e0cc';
+}
+
+.oi[data-glyph=timer]:before {
+ content: '\e0cd';
+}
+
+.oi[data-glyph=transfer]:before {
+ content: '\e0ce';
+}
+
+.oi[data-glyph=trash]:before {
+ content: '\e0cf';
+}
+
+.oi[data-glyph=underline]:before {
+ content: '\e0d0';
+}
+
+.oi[data-glyph=vertical-align-bottom]:before {
+ content: '\e0d1';
+}
+
+.oi[data-glyph=vertical-align-center]:before {
+ content: '\e0d2';
+}
+
+.oi[data-glyph=vertical-align-top]:before {
+ content: '\e0d3';
+}
+
+.oi[data-glyph=video]:before {
+ content: '\e0d4';
+}
+
+.oi[data-glyph=volume-high]:before {
+ content: '\e0d5';
+}
+
+.oi[data-glyph=volume-low]:before {
+ content: '\e0d6';
+}
+
+.oi[data-glyph=volume-off]:before {
+ content: '\e0d7';
+}
+
+.oi[data-glyph=warning]:before {
+ content: '\e0d8';
+}
+
+.oi[data-glyph=wifi]:before {
+ content: '\e0d9';
+}
+
+.oi[data-glyph=wrench]:before {
+ content: '\e0da';
+}
+
+.oi[data-glyph=x]:before {
+ content: '\e0db';
+}
+
+.oi[data-glyph=yen]:before {
+ content: '\e0dc';
+}
+
+.oi[data-glyph=zoom-in]:before {
+ content: '\e0dd';
+}
+
+.oi[data-glyph=zoom-out]:before {
+ content: '\e0de';
+}
+
diff --git a/public/font/css/open-iconic.styl b/public/font/css/open-iconic.styl
new file mode 100644
index 0000000..f541bc2
--- /dev/null
+++ b/public/font/css/open-iconic.styl
@@ -0,0 +1,733 @@
+@font-face
+ font-family 'Icons'
+ src url('../fonts/open-iconic.eot')
+ src url('../fonts/open-iconic.eot?#iconic-sm') format('embedded-opentype'), url('../fonts/open-iconic.woff') format('woff'), url('../fonts/open-iconic.ttf') format('truetype'), url('../fonts/open-iconic.otf') format('opentype'), url('../fonts/open-iconic.svg#iconic-sm') format('svg')
+ font-weight normal
+ font-style normal
+
+
+.oi[data-glyph].oi-text-replace
+ font-size 0
+ line-height 0
+
+.oi[data-glyph].oi-text-replace:before
+ width 1em
+ text-align center
+
+.oi[data-glyph]
+ &:before
+ position relative
+ top 1px
+ font-family 'Icons'
+ display inline-block
+ speak none
+ line-height 1
+ vertical-align baseline
+ font-weight normal
+ font-style normal
+ -webkit-font-smoothing antialiased
+ -moz-osx-font-smoothing grayscale
+
+ &:empty:before
+ width 1em
+ text-align center
+ box-sizing content-box
+
+ &.oi-align-left:before
+ text-align left
+
+ &.oi-align-right:before
+ text-align right
+
+ &.oi-align-center:before
+ text-align center
+
+
+ &.oi-flip-horizontal:before
+ -webkit-transform scale(-1, 1)
+ -ms-transform scale(-1, 1)
+ transform scale(-1, 1)
+
+
+ &.oi-flip-vertical:before
+ -webkit-transform scale(1, -1)
+ -ms-transform scale(-1, 1)
+ transform scale(1, -1)
+
+
+ &.oi-flip-horizontal-vertical:before
+ -webkit-transform scale(-1, -1)
+ -ms-transform scale(-1, 1)
+ transform scale(-1, -1)
+
+
+
+
+.oi[data-glyph=account-login]:before
+ content '\e000'
+
+.oi[data-glyph=account-logout]:before
+ content '\e001'
+
+.oi[data-glyph=action-redo]:before
+ content '\e002'
+
+.oi[data-glyph=action-undo]:before
+ content '\e003'
+
+.oi[data-glyph=align-center]:before
+ content '\e004'
+
+.oi[data-glyph=align-left]:before
+ content '\e005'
+
+.oi[data-glyph=align-right]:before
+ content '\e006'
+
+.oi[data-glyph=aperture]:before
+ content '\e007'
+
+.oi[data-glyph=arrow-bottom]:before
+ content '\e008'
+
+.oi[data-glyph=arrow-circle-bottom]:before
+ content '\e009'
+
+.oi[data-glyph=arrow-circle-left]:before
+ content '\e00a'
+
+.oi[data-glyph=arrow-circle-right]:before
+ content '\e00b'
+
+.oi[data-glyph=arrow-circle-top]:before
+ content '\e00c'
+
+.oi[data-glyph=arrow-left]:before
+ content '\e00d'
+
+.oi[data-glyph=arrow-right]:before
+ content '\e00e'
+
+.oi[data-glyph=arrow-thick-bottom]:before
+ content '\e00f'
+
+.oi[data-glyph=arrow-thick-left]:before
+ content '\e010'
+
+.oi[data-glyph=arrow-thick-right]:before
+ content '\e011'
+
+.oi[data-glyph=arrow-thick-top]:before
+ content '\e012'
+
+.oi[data-glyph=arrow-top]:before
+ content '\e013'
+
+.oi[data-glyph=audio-spectrum]:before
+ content '\e014'
+
+.oi[data-glyph=audio]:before
+ content '\e015'
+
+.oi[data-glyph=badge]:before
+ content '\e016'
+
+.oi[data-glyph=ban]:before
+ content '\e017'
+
+.oi[data-glyph=bar-chart]:before
+ content '\e018'
+
+.oi[data-glyph=basket]:before
+ content '\e019'
+
+.oi[data-glyph=battery-empty]:before
+ content '\e01a'
+
+.oi[data-glyph=battery-full]:before
+ content '\e01b'
+
+.oi[data-glyph=beaker]:before
+ content '\e01c'
+
+.oi[data-glyph=bell]:before
+ content '\e01d'
+
+.oi[data-glyph=bluetooth]:before
+ content '\e01e'
+
+.oi[data-glyph=bold]:before
+ content '\e01f'
+
+.oi[data-glyph=bolt]:before
+ content '\e020'
+
+.oi[data-glyph=book]:before
+ content '\e021'
+
+.oi[data-glyph=bookmark]:before
+ content '\e022'
+
+.oi[data-glyph=box]:before
+ content '\e023'
+
+.oi[data-glyph=briefcase]:before
+ content '\e024'
+
+.oi[data-glyph=british-pound]:before
+ content '\e025'
+
+.oi[data-glyph=browser]:before
+ content '\e026'
+
+.oi[data-glyph=brush]:before
+ content '\e027'
+
+.oi[data-glyph=bug]:before
+ content '\e028'
+
+.oi[data-glyph=bullhorn]:before
+ content '\e029'
+
+.oi[data-glyph=calculator]:before
+ content '\e02a'
+
+.oi[data-glyph=calendar]:before
+ content '\e02b'
+
+.oi[data-glyph=camera-slr]:before
+ content '\e02c'
+
+.oi[data-glyph=caret-bottom]:before
+ content '\e02d'
+
+.oi[data-glyph=caret-left]:before
+ content '\e02e'
+
+.oi[data-glyph=caret-right]:before
+ content '\e02f'
+
+.oi[data-glyph=caret-top]:before
+ content '\e030'
+
+.oi[data-glyph=cart]:before
+ content '\e031'
+
+.oi[data-glyph=chat]:before
+ content '\e032'
+
+.oi[data-glyph=check]:before
+ content '\e033'
+
+.oi[data-glyph=chevron-bottom]:before
+ content '\e034'
+
+.oi[data-glyph=chevron-left]:before
+ content '\e035'
+
+.oi[data-glyph=chevron-right]:before
+ content '\e036'
+
+.oi[data-glyph=chevron-top]:before
+ content '\e037'
+
+.oi[data-glyph=circle-check]:before
+ content '\e038'
+
+.oi[data-glyph=circle-x]:before
+ content '\e039'
+
+.oi[data-glyph=clipboard]:before
+ content '\e03a'
+
+.oi[data-glyph=clock]:before
+ content '\e03b'
+
+.oi[data-glyph=cloud-download]:before
+ content '\e03c'
+
+.oi[data-glyph=cloud-upload]:before
+ content '\e03d'
+
+.oi[data-glyph=cloud]:before
+ content '\e03e'
+
+.oi[data-glyph=cloudy]:before
+ content '\e03f'
+
+.oi[data-glyph=code]:before
+ content '\e040'
+
+.oi[data-glyph=cog]:before
+ content '\e041'
+
+.oi[data-glyph=collapse-down]:before
+ content '\e042'
+
+.oi[data-glyph=collapse-left]:before
+ content '\e043'
+
+.oi[data-glyph=collapse-right]:before
+ content '\e044'
+
+.oi[data-glyph=collapse-up]:before
+ content '\e045'
+
+.oi[data-glyph=command]:before
+ content '\e046'
+
+.oi[data-glyph=comment-square]:before
+ content '\e047'
+
+.oi[data-glyph=compass]:before
+ content '\e048'
+
+.oi[data-glyph=contrast]:before
+ content '\e049'
+
+.oi[data-glyph=copywriting]:before
+ content '\e04a'
+
+.oi[data-glyph=credit-card]:before
+ content '\e04b'
+
+.oi[data-glyph=crop]:before
+ content '\e04c'
+
+.oi[data-glyph=dashboard]:before
+ content '\e04d'
+
+.oi[data-glyph=data-transfer-download]:before
+ content '\e04e'
+
+.oi[data-glyph=data-transfer-upload]:before
+ content '\e04f'
+
+.oi[data-glyph=delete]:before
+ content '\e050'
+
+.oi[data-glyph=dial]:before
+ content '\e051'
+
+.oi[data-glyph=document]:before
+ content '\e052'
+
+.oi[data-glyph=dollar]:before
+ content '\e053'
+
+.oi[data-glyph=double-quote-sans-left]:before
+ content '\e054'
+
+.oi[data-glyph=double-quote-sans-right]:before
+ content '\e055'
+
+.oi[data-glyph=double-quote-serif-left]:before
+ content '\e056'
+
+.oi[data-glyph=double-quote-serif-right]:before
+ content '\e057'
+
+.oi[data-glyph=droplet]:before
+ content '\e058'
+
+.oi[data-glyph=eject]:before
+ content '\e059'
+
+.oi[data-glyph=elevator]:before
+ content '\e05a'
+
+.oi[data-glyph=ellipses]:before
+ content '\e05b'
+
+.oi[data-glyph=envelope-closed]:before
+ content '\e05c'
+
+.oi[data-glyph=envelope-open]:before
+ content '\e05d'
+
+.oi[data-glyph=euro]:before
+ content '\e05e'
+
+.oi[data-glyph=excerpt]:before
+ content '\e05f'
+
+.oi[data-glyph=expand-down]:before
+ content '\e060'
+
+.oi[data-glyph=expand-left]:before
+ content '\e061'
+
+.oi[data-glyph=expand-right]:before
+ content '\e062'
+
+.oi[data-glyph=expand-up]:before
+ content '\e063'
+
+.oi[data-glyph=external-link]:before
+ content '\e064'
+
+.oi[data-glyph=eye]:before
+ content '\e065'
+
+.oi[data-glyph=eyedropper]:before
+ content '\e066'
+
+.oi[data-glyph=file]:before
+ content '\e067'
+
+.oi[data-glyph=fire]:before
+ content '\e068'
+
+.oi[data-glyph=flag]:before
+ content '\e069'
+
+.oi[data-glyph=flash]:before
+ content '\e06a'
+
+.oi[data-glyph=folder]:before
+ content '\e06b'
+
+.oi[data-glyph=fork]:before
+ content '\e06c'
+
+.oi[data-glyph=fullscreen-enter]:before
+ content '\e06d'
+
+.oi[data-glyph=fullscreen-exit]:before
+ content '\e06e'
+
+.oi[data-glyph=globe]:before
+ content '\e06f'
+
+.oi[data-glyph=graph]:before
+ content '\e070'
+
+.oi[data-glyph=grid-four-up]:before
+ content '\e071'
+
+.oi[data-glyph=grid-three-up]:before
+ content '\e072'
+
+.oi[data-glyph=grid-two-up]:before
+ content '\e073'
+
+.oi[data-glyph=hard-drive]:before
+ content '\e074'
+
+.oi[data-glyph=header]:before
+ content '\e075'
+
+.oi[data-glyph=headphones]:before
+ content '\e076'
+
+.oi[data-glyph=heart]:before
+ content '\e077'
+
+.oi[data-glyph=home]:before
+ content '\e078'
+
+.oi[data-glyph=image]:before
+ content '\e079'
+
+.oi[data-glyph=inbox]:before
+ content '\e07a'
+
+.oi[data-glyph=infinity]:before
+ content '\e07b'
+
+.oi[data-glyph=info]:before
+ content '\e07c'
+
+.oi[data-glyph=italic]:before
+ content '\e07d'
+
+.oi[data-glyph=justify-center]:before
+ content '\e07e'
+
+.oi[data-glyph=justify-left]:before
+ content '\e07f'
+
+.oi[data-glyph=justify-right]:before
+ content '\e080'
+
+.oi[data-glyph=key]:before
+ content '\e081'
+
+.oi[data-glyph=laptop]:before
+ content '\e082'
+
+.oi[data-glyph=layers]:before
+ content '\e083'
+
+.oi[data-glyph=lightbulb]:before
+ content '\e084'
+
+.oi[data-glyph=link-broken]:before
+ content '\e085'
+
+.oi[data-glyph=link-intact]:before
+ content '\e086'
+
+.oi[data-glyph=list-rich]:before
+ content '\e087'
+
+.oi[data-glyph=list]:before
+ content '\e088'
+
+.oi[data-glyph=location]:before
+ content '\e089'
+
+.oi[data-glyph=lock-locked]:before
+ content '\e08a'
+
+.oi[data-glyph=lock-unlocked]:before
+ content '\e08b'
+
+.oi[data-glyph=loop-circular]:before
+ content '\e08c'
+
+.oi[data-glyph=loop-square]:before
+ content '\e08d'
+
+.oi[data-glyph=loop]:before
+ content '\e08e'
+
+.oi[data-glyph=magnifying-glass]:before
+ content '\e08f'
+
+.oi[data-glyph=map-marker]:before
+ content '\e090'
+
+.oi[data-glyph=map]:before
+ content '\e091'
+
+.oi[data-glyph=media-pause]:before
+ content '\e092'
+
+.oi[data-glyph=media-play]:before
+ content '\e093'
+
+.oi[data-glyph=media-record]:before
+ content '\e094'
+
+.oi[data-glyph=media-skip-backward]:before
+ content '\e095'
+
+.oi[data-glyph=media-skip-forward]:before
+ content '\e096'
+
+.oi[data-glyph=media-step-backward]:before
+ content '\e097'
+
+.oi[data-glyph=media-step-forward]:before
+ content '\e098'
+
+.oi[data-glyph=media-stop]:before
+ content '\e099'
+
+.oi[data-glyph=medical-cross]:before
+ content '\e09a'
+
+.oi[data-glyph=menu]:before
+ content '\e09b'
+
+.oi[data-glyph=microphone]:before
+ content '\e09c'
+
+.oi[data-glyph=minus]:before
+ content '\e09d'
+
+.oi[data-glyph=monitor]:before
+ content '\e09e'
+
+.oi[data-glyph=moon]:before
+ content '\e09f'
+
+.oi[data-glyph=move]:before
+ content '\e0a0'
+
+.oi[data-glyph=musical-note]:before
+ content '\e0a1'
+
+.oi[data-glyph=paperclip]:before
+ content '\e0a2'
+
+.oi[data-glyph=pencil]:before
+ content '\e0a3'
+
+.oi[data-glyph=people]:before
+ content '\e0a4'
+
+.oi[data-glyph=person]:before
+ content '\e0a5'
+
+.oi[data-glyph=phone]:before
+ content '\e0a6'
+
+.oi[data-glyph=pie-chart]:before
+ content '\e0a7'
+
+.oi[data-glyph=pin]:before
+ content '\e0a8'
+
+.oi[data-glyph=play-circle]:before
+ content '\e0a9'
+
+.oi[data-glyph=plus]:before
+ content '\e0aa'
+
+.oi[data-glyph=power-standby]:before
+ content '\e0ab'
+
+.oi[data-glyph=print]:before
+ content '\e0ac'
+
+.oi[data-glyph=project]:before
+ content '\e0ad'
+
+.oi[data-glyph=pulse]:before
+ content '\e0ae'
+
+.oi[data-glyph=puzzle-piece]:before
+ content '\e0af'
+
+.oi[data-glyph=question-mark]:before
+ content '\e0b0'
+
+.oi[data-glyph=rain]:before
+ content '\e0b1'
+
+.oi[data-glyph=random]:before
+ content '\e0b2'
+
+.oi[data-glyph=reload]:before
+ content '\e0b3'
+
+.oi[data-glyph=resize-both]:before
+ content '\e0b4'
+
+.oi[data-glyph=resize-height]:before
+ content '\e0b5'
+
+.oi[data-glyph=resize-width]:before
+ content '\e0b6'
+
+.oi[data-glyph=rss-alt]:before
+ content '\e0b7'
+
+.oi[data-glyph=rss]:before
+ content '\e0b8'
+
+.oi[data-glyph=script]:before
+ content '\e0b9'
+
+.oi[data-glyph=share-boxed]:before
+ content '\e0ba'
+
+.oi[data-glyph=share]:before
+ content '\e0bb'
+
+.oi[data-glyph=shield]:before
+ content '\e0bc'
+
+.oi[data-glyph=signal]:before
+ content '\e0bd'
+
+.oi[data-glyph=signpost]:before
+ content '\e0be'
+
+.oi[data-glyph=sort-ascending]:before
+ content '\e0bf'
+
+.oi[data-glyph=sort-descending]:before
+ content '\e0c0'
+
+.oi[data-glyph=spreadsheet]:before
+ content '\e0c1'
+
+.oi[data-glyph=star]:before
+ content '\e0c2'
+
+.oi[data-glyph=sun]:before
+ content '\e0c3'
+
+.oi[data-glyph=tablet]:before
+ content '\e0c4'
+
+.oi[data-glyph=tag]:before
+ content '\e0c5'
+
+.oi[data-glyph=tags]:before
+ content '\e0c6'
+
+.oi[data-glyph=target]:before
+ content '\e0c7'
+
+.oi[data-glyph=task]:before
+ content '\e0c8'
+
+.oi[data-glyph=terminal]:before
+ content '\e0c9'
+
+.oi[data-glyph=text]:before
+ content '\e0ca'
+
+.oi[data-glyph=thumb-down]:before
+ content '\e0cb'
+
+.oi[data-glyph=thumb-up]:before
+ content '\e0cc'
+
+.oi[data-glyph=timer]:before
+ content '\e0cd'
+
+.oi[data-glyph=transfer]:before
+ content '\e0ce'
+
+.oi[data-glyph=trash]:before
+ content '\e0cf'
+
+.oi[data-glyph=underline]:before
+ content '\e0d0'
+
+.oi[data-glyph=vertical-align-bottom]:before
+ content '\e0d1'
+
+.oi[data-glyph=vertical-align-center]:before
+ content '\e0d2'
+
+.oi[data-glyph=vertical-align-top]:before
+ content '\e0d3'
+
+.oi[data-glyph=video]:before
+ content '\e0d4'
+
+.oi[data-glyph=volume-high]:before
+ content '\e0d5'
+
+.oi[data-glyph=volume-low]:before
+ content '\e0d6'
+
+.oi[data-glyph=volume-off]:before
+ content '\e0d7'
+
+.oi[data-glyph=warning]:before
+ content '\e0d8'
+
+.oi[data-glyph=wifi]:before
+ content '\e0d9'
+
+.oi[data-glyph=wrench]:before
+ content '\e0da'
+
+.oi[data-glyph=x]:before
+ content '\e0db'
+
+.oi[data-glyph=yen]:before
+ content '\e0dc'
+
+.oi[data-glyph=zoom-in]:before
+ content '\e0dd'
+
+.oi[data-glyph=zoom-out]:before
+ content '\e0de'
diff --git a/public/font/fonts/open-iconic.eot b/public/font/fonts/open-iconic.eot
new file mode 100644
index 0000000..f98177d
Binary files /dev/null and b/public/font/fonts/open-iconic.eot differ
diff --git a/public/font/fonts/open-iconic.otf b/public/font/fonts/open-iconic.otf
new file mode 100644
index 0000000..f6bd684
Binary files /dev/null and b/public/font/fonts/open-iconic.otf differ
diff --git a/public/font/fonts/open-iconic.svg b/public/font/fonts/open-iconic.svg
new file mode 100644
index 0000000..32b2c4e
--- /dev/null
+++ b/public/font/fonts/open-iconic.svg
@@ -0,0 +1,543 @@
+
+
+
+
+
+Created by FontForge 20120731 at Tue Jul 1 20:39:22 2014
+ By P.J. Onori
+Created by P.J. Onori with FontForge 2.0 (http://fontforge.sf.net)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/font/fonts/open-iconic.ttf b/public/font/fonts/open-iconic.ttf
new file mode 100644
index 0000000..fab6048
Binary files /dev/null and b/public/font/fonts/open-iconic.ttf differ
diff --git a/public/font/fonts/open-iconic.woff b/public/font/fonts/open-iconic.woff
new file mode 100644
index 0000000..f930998
Binary files /dev/null and b/public/font/fonts/open-iconic.woff differ
diff --git a/public/img/feed-icon-gray.jpg b/public/img/feed-icon-gray.jpg
new file mode 100644
index 0000000..43b5e84
Binary files /dev/null and b/public/img/feed-icon-gray.jpg differ
diff --git a/public/img/paw-400-400.png b/public/img/paw-400-400.png
new file mode 100644
index 0000000..5fca4e0
Binary files /dev/null and b/public/img/paw-400-400.png differ
diff --git a/public/img/rss-alt.svg b/public/img/rss-alt.svg
new file mode 100644
index 0000000..b55d816
--- /dev/null
+++ b/public/img/rss-alt.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/public/img/rss.svg b/public/img/rss.svg
new file mode 100644
index 0000000..1e70b74
--- /dev/null
+++ b/public/img/rss.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..4584cbc
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,60 @@
+
+ */
+
+define('LARAVEL_START', microtime(true));
+
+/*
+|--------------------------------------------------------------------------
+| Register The Auto Loader
+|--------------------------------------------------------------------------
+|
+| Composer provides a convenient, automatically generated class loader for
+| our application. We just need to utilize it! We'll simply require it
+| into the script here so that we don't have to worry about manual
+| loading any of our classes later on. It feels great to relax.
+|
+*/
+
+require __DIR__.'/../vendor/autoload.php';
+
+/*
+|--------------------------------------------------------------------------
+| Turn On The Lights
+|--------------------------------------------------------------------------
+|
+| We need to illuminate PHP development, so let us turn on the lights.
+| This bootstraps the framework and gets it ready for use, then it
+| will load up this application so that we can run it and send
+| the responses back to the browser and delight our users.
+|
+*/
+
+$app = require_once __DIR__.'/../bootstrap/app.php';
+
+/*
+|--------------------------------------------------------------------------
+| Run The Application
+|--------------------------------------------------------------------------
+|
+| Once we have the application, we can handle the incoming request
+| through the kernel, and send the associated response back to
+| the client's browser allowing them to enjoy the creative
+| and wonderful application we have prepared for them.
+|
+*/
+
+$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
+
+$response = $kernel->handle(
+ $request = Illuminate\Http\Request::capture()
+);
+
+$response->send();
+
+$kernel->terminate($request, $response);
diff --git a/public/js/app.js b/public/js/app.js
new file mode 100644
index 0000000..c5d3189
--- /dev/null
+++ b/public/js/app.js
@@ -0,0 +1 @@
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=11)}([function(t,e,n){"use strict";var r=n(5),i=n(19),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function s(t){return null!==t&&"object"==typeof t}function u(t){return"[object Function]"===o.call(t)}function c(t,e){if(null!==t&&void 0!==t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n=200&&t<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(t){u.headers[t]={}}),r.forEach(["post","put","patch"],function(t){u.headers[t]=r.merge(o)}),t.exports=u}).call(e,n(6))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),function(t){for(var n="undefined"!=typeof window&&"undefined"!=typeof document,r=["Edge","Trident","Firefox"],i=0,o=0;o=0){i=1;break}var a=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},i))}};function s(t){return t&&"[object Function]"==={}.toString.call(t)}function u(t,e){if(1!==t.nodeType)return[];var n=getComputedStyle(t,null);return e?n[e]:n}function c(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function l(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=u(t),n=e.overflow,r=e.overflowX,i=e.overflowY;return/(auto|scroll)/.test(n+i+r)?t:l(c(t))}function f(t){var e=t&&t.offsetParent,n=e&&e.nodeName;return n&&"BODY"!==n&&"HTML"!==n?-1!==["TD","TABLE"].indexOf(e.nodeName)&&"static"===u(e,"position")?f(e):e:t?t.ownerDocument.documentElement:document.documentElement}function p(t){return null!==t.parentNode?p(t.parentNode):t}function d(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,i=n?e:t,o=document.createRange();o.setStart(r,0),o.setEnd(i,0);var a,s,u=o.commonAncestorContainer;if(t!==u&&e!==u||r.contains(i))return"BODY"===(s=(a=u).nodeName)||"HTML"!==s&&f(a.firstElementChild)!==a?f(u):u;var c=p(t);return c.host?d(c.host,e):d(t,p(e).host)}function h(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var r=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||r)[e]}return t[e]}function v(t,e){var n="x"===e?"Left":"Top",r="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+r+"Width"],10)}var g=void 0,m=function(){return void 0===g&&(g=-1!==navigator.appVersion.indexOf("MSIE 10")),g};function y(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],m()?n["offset"+t]+r["margin"+("Height"===t?"Top":"Left")]+r["margin"+("Height"===t?"Bottom":"Right")]:0)}function _(){var t=document.body,e=document.documentElement,n=m()&&getComputedStyle(e);return{height:y("Height",t,e,n),width:y("Width",t,e,n)}}var b=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},w=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],r=h(e,"top"),i=h(e,"left"),o=n?-1:1;return t.top+=r*o,t.bottom+=r*o,t.left+=i*o,t.right+=i*o,t}(p,e)),p}function S(t,e,n,r){var i,o,a,s,f,p,v,g={top:0,left:0},m=d(t,e);if("viewport"===r)o=(i=m).ownerDocument.documentElement,a=A(i,o),s=Math.max(o.clientWidth,window.innerWidth||0),f=Math.max(o.clientHeight,window.innerHeight||0),p=h(o),v=h(o,"left"),g=T({top:p-a.top+a.marginTop,left:v-a.left+a.marginLeft,width:s,height:f});else{var y=void 0;"scrollParent"===r?"BODY"===(y=l(c(e))).nodeName&&(y=t.ownerDocument.documentElement):y="window"===r?t.ownerDocument.documentElement:r;var b=A(y,m);if("HTML"!==y.nodeName||function t(e){var n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===u(e,"position")||t(c(e)))}(m))g=b;else{var w=_(),x=w.height,C=w.width;g.top+=b.top-b.marginTop,g.bottom=x+b.top,g.left+=b.left-b.marginLeft,g.right=C+b.left}}return g.left+=n,g.top+=n,g.right-=n,g.bottom-=n,g}function k(t,e,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=S(n,r,o,i),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},u=Object.keys(s).map(function(t){return C({key:t},s[t],{area:(e=s[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=u.filter(function(t){var e=t.width,r=t.height;return e>=n.clientWidth&&r>=n.clientHeight}),l=c.length>0?c[0].key:u[0].key,f=t.split("-")[1];return l+(f?"-"+f:"")}function O(t,e,n){return A(n,d(e,n))}function D(t){var e=getComputedStyle(t),n=parseFloat(e.marginTop)+parseFloat(e.marginBottom),r=parseFloat(e.marginLeft)+parseFloat(e.marginRight);return{width:t.offsetWidth+r,height:t.offsetHeight+n}}function I(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function N(t,e,n){n=n.split("-")[0];var r=D(t),i={width:r.width,height:r.height},o=-1!==["right","left"].indexOf(n),a=o?"top":"left",s=o?"left":"top",u=o?"height":"width",c=o?"width":"height";return i[a]=e[a]+e[u]/2-r[u]/2,i[s]=n===s?e[s]-r[c]:e[I(s)],i}function j(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function L(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var r=j(t,function(t){return t[e]===n});return t.indexOf(r)}(t,"name",n))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&s(n)&&(e.offsets.popper=T(e.offsets.popper),e.offsets.reference=T(e.offsets.reference),e=n(e,t))}),e}function $(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function R(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;r1&&void 0!==arguments[1]&&arguments[1],n=U.indexOf(t),r=U.slice(n+1).concat(U.slice(0,n));return e?r.reverse():r}var V={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function K(t,e,n,r){var i=[0,0],o=-1!==["right","left"].indexOf(r),a=t.split(/(\+|\-)/).map(function(t){return t.trim()}),s=a.indexOf(j(a,function(t){return-1!==t.search(/,|\s/)}));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var u=/\s*,\s*|\s+/,c=-1!==s?[a.slice(0,s).concat([a[s].split(u)[0]]),[a[s].split(u)[1]].concat(a.slice(s+1))]:[a];return(c=c.map(function(t,r){var i=(1===r?!o:o)?"height":"width",a=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,r){var i=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+i[1],a=i[2];if(!o)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}return T(s)[e]/100*o}if("vh"===a||"vw"===a)return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o;return o}(t,i,e,n)})})).forEach(function(t,e){t.forEach(function(n,r){H(n)&&(i[e]+=n*("-"===t[r-1]?-1:1))})}),i}var Q={placement:"bottom",eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var i=t.offsets,o=i.reference,a=i.popper,s=-1!==["bottom","top"].indexOf(n),u=s?"left":"top",c=s?"width":"height",l={start:x({},u,o[u]),end:x({},u,o[u]+o[c]-a[c])};t.offsets.popper=C({},a,l[r])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,r=t.placement,i=t.offsets,o=i.popper,a=i.reference,s=r.split("-")[0],u=void 0;return u=H(+n)?[+n,0]:K(n,o,a,s),"left"===s?(o.top+=u[0],o.left-=u[1]):"right"===s?(o.top+=u[0],o.left+=u[1]):"top"===s?(o.left+=u[0],o.top-=u[1]):"bottom"===s&&(o.left+=u[0],o.top+=u[1]),t.popper=o,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||f(t.instance.popper);t.instance.reference===n&&(n=f(n));var r=S(t.instance.popper,t.instance.reference,e.padding,n);e.boundaries=r;var i=e.priority,o=t.offsets.popper,a={primary:function(t){var n=o[t];return o[t]r[t]&&!e.escapeWithReference&&(i=Math.min(o[n],r[t]-("right"===t?o.width:o.height))),x({},n,i)}};return i.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";o=C({},o,a[e](t))}),t.offsets.popper=o,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,r=e.reference,i=t.placement.split("-")[0],o=Math.floor,a=-1!==["top","bottom"].indexOf(i),s=a?"right":"bottom",u=a?"left":"top",c=a?"width":"height";return n[s]o(r[s])&&(t.offsets.popper[u]=o(r[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!W(t.instance.modifiers,"arrow","keepTogether"))return t;var r=e.element;if("string"==typeof r){if(!(r=t.instance.popper.querySelector(r)))return t}else if(!t.instance.popper.contains(r))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var i=t.placement.split("-")[0],o=t.offsets,a=o.popper,s=o.reference,c=-1!==["left","right"].indexOf(i),l=c?"height":"width",f=c?"Top":"Left",p=f.toLowerCase(),d=c?"left":"top",h=c?"bottom":"right",v=D(r)[l];s[h]-va[h]&&(t.offsets.popper[p]+=s[p]+v-a[h]),t.offsets.popper=T(t.offsets.popper);var g=s[p]+s[l]/2-v/2,m=u(t.instance.popper),y=parseFloat(m["margin"+f],10),_=parseFloat(m["border"+f+"Width"],10),b=g-t.offsets.popper[p]-y-_;return b=Math.max(Math.min(a[l]-v,b),0),t.arrowElement=r,t.offsets.arrow=(x(n={},p,Math.round(b)),x(n,d,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if($(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=S(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement),r=t.placement.split("-")[0],i=I(r),o=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case V.FLIP:a=[r,i];break;case V.CLOCKWISE:a=z(r);break;case V.COUNTERCLOCKWISE:a=z(r,!0);break;default:a=e.behavior}return a.forEach(function(s,u){if(r!==s||a.length===u+1)return t;r=t.placement.split("-")[0],i=I(r);var c,l=t.offsets.popper,f=t.offsets.reference,p=Math.floor,d="left"===r&&p(l.right)>p(f.left)||"right"===r&&p(l.left)p(f.top)||"bottom"===r&&p(l.top)
p(n.right),g=p(l.top)
p(n.bottom),y="left"===r&&h||"right"===r&&v||"top"===r&&g||"bottom"===r&&m,_=-1!==["top","bottom"].indexOf(r),b=!!e.flipVariations&&(_&&"start"===o&&h||_&&"end"===o&&v||!_&&"start"===o&&g||!_&&"end"===o&&m);(d||y||b)&&(t.flipped=!0,(d||y)&&(r=a[u+1]),b&&(o="end"===(c=o)?"start":"start"===c?"end":c),t.placement=r+(o?"-"+o:""),t.offsets.popper=C({},t.offsets.popper,N(t.instance.popper,t.offsets.reference,t.placement)),t=L(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],r=t.offsets,i=r.popper,o=r.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return i[a?"left":"top"]=o[n]-(s?i[a?"width":"height"]:0),t.placement=I(e),t.offsets.popper=T(i),t}},hide:{order:800,enabled:!0,fn:function(t){if(!W(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=j(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};b(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=a(this.update.bind(this)),this.options=C({},t.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,i.modifiers)).forEach(function(e){r.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},i.modifiers?i.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return C({name:t},r.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&s(t.onLoad)&&t.onLoad(r.reference,r.popper,r.options,t,r.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return w(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=O(this.state,this.popper,this.reference),t.placement=k(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.offsets.popper=N(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position="absolute",t=L(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,$(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.left="",this.popper.style.position="",this.popper.style.top="",this.popper.style[R("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=M(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return F.call(this)}}]),t}();G.Utils=("undefined"!=typeof window?window:t).PopperUtils,G.placements=q,G.Defaults=Q,e.default=G}.call(e,n(1))},function(t,e,n){var r;!function(e,n){"use strict";"object"==typeof t&&"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,function(n,i){"use strict";var o=[],a=n.document,s=Object.getPrototypeOf,u=o.slice,c=o.concat,l=o.push,f=o.indexOf,p={},d=p.toString,h=p.hasOwnProperty,v=h.toString,g=v.call(Object),m={};function y(t,e){var n=(e=e||a).createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}var _=function(t,e){return new _.fn.init(t,e)},b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^-ms-/,x=/-([a-z])/g,C=function(t,e){return e.toUpperCase()};function T(t){var e=!!t&&"length"in t&&t.length,n=_.type(t);return"function"!==n&&!_.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}_.fn=_.prototype={jquery:"3.2.1",constructor:_,length:0,toArray:function(){return u.call(this)},get:function(t){return null==t?u.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=_.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return _.each(this,t)},map:function(t){return this.pushStack(_.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+R+")"+R+"*"),U=new RegExp("="+R+"*([^\\]'\"]*?)"+R+"*\\]","g"),z=new RegExp(F),V=new RegExp("^"+P+"$"),K={ID:new RegExp("^#("+P+")"),CLASS:new RegExp("^\\.("+P+")"),TAG:new RegExp("^("+P+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+$+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,G=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,X=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,J=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),tt=function(t,e,n){var r="0x"+e-65536;return r!=r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},et=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,nt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},rt=function(){p()},it=yt(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{N.apply(O=j.call(w.childNodes),w.childNodes),O[w.childNodes.length].nodeType}catch(t){N={apply:O.length?function(t,e){I.apply(t,j.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function ot(t,e,r,i){var o,s,c,l,f,h,m,y=e&&e.ownerDocument,x=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==x&&9!==x&&11!==x)return r;if(!i&&((e?e.ownerDocument||e:w)!==d&&p(e),e=e||d,v)){if(11!==x&&(f=X.exec(t)))if(o=f[1]){if(9===x){if(!(c=e.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(y&&(c=y.getElementById(o))&&_(e,c)&&c.id===o)return r.push(c),r}else{if(f[2])return N.apply(r,e.getElementsByTagName(t)),r;if((o=f[3])&&n.getElementsByClassName&&e.getElementsByClassName)return N.apply(r,e.getElementsByClassName(o)),r}if(n.qsa&&!A[t+" "]&&(!g||!g.test(t))){if(1!==x)y=e,m=t;else if("object"!==e.nodeName.toLowerCase()){for((l=e.getAttribute("id"))?l=l.replace(et,nt):e.setAttribute("id",l=b),s=(h=a(t)).length;s--;)h[s]="#"+l+" "+mt(h[s]);m=h.join(","),y=J.test(t)&&vt(e.parentNode)||e}if(m)try{return N.apply(r,y.querySelectorAll(m)),r}catch(t){}finally{l===b&&e.removeAttribute("id")}}}return u(t.replace(B,"$1"),e,r,i)}function at(){var t=[];return function e(n,i){return t.push(n+" ")>r.cacheLength&&delete e[t.shift()],e[n+" "]=i}}function st(t){return t[b]=!0,t}function ut(t){var e=d.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function ct(t,e){for(var n=t.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=e}function lt(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function ft(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function pt(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function dt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&it(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ht(t){return st(function(e){return e=+e,st(function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function vt(t){return t&&void 0!==t.getElementsByTagName&&t}n=ot.support={},o=ot.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},p=ot.setDocument=function(t){var e,i,a=t?t.ownerDocument||t:w;return a!==d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,v=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",rt,!1):i.attachEvent&&i.attachEvent("onunload",rt)),n.attributes=ut(function(t){return t.className="i",!t.getAttribute("className")}),n.getElementsByTagName=ut(function(t){return t.appendChild(d.createComment("")),!t.getElementsByTagName("*").length}),n.getElementsByClassName=Y.test(d.getElementsByClassName),n.getById=ut(function(t){return h.appendChild(t).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(t){var e=t.replace(Z,tt);return function(t){return t.getAttribute("id")===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&v){var n=e.getElementById(t);return n?[n]:[]}}):(r.filter.ID=function(t){var e=t.replace(Z,tt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&v){var n,r,i,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(i=e.getElementsByName(t),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):n.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&v)return e.getElementsByClassName(t)},m=[],g=[],(n.qsa=Y.test(d.querySelectorAll))&&(ut(function(t){h.appendChild(t).innerHTML=" ",t.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+R+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||g.push("\\["+R+"*(?:value|"+$+")"),t.querySelectorAll("[id~="+b+"-]").length||g.push("~="),t.querySelectorAll(":checked").length||g.push(":checked"),t.querySelectorAll("a#"+b+"+*").length||g.push(".#.+[+~]")}),ut(function(t){t.innerHTML=" ";var e=d.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&g.push("name"+R+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),g.push(",.*:")})),(n.matchesSelector=Y.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ut(function(t){n.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),m.push("!=",F)}),g=g.length&&new RegExp(g.join("|")),m=m.length&&new RegExp(m.join("|")),e=Y.test(h.compareDocumentPosition),_=e||Y.test(h.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},S=e?function(t,e){if(t===e)return f=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!n.sortDetached&&e.compareDocumentPosition(t)===r?t===d||t.ownerDocument===w&&_(w,t)?-1:e===d||e.ownerDocument===w&&_(w,e)?1:l?L(l,t)-L(l,e):0:4&r?-1:1)}:function(t,e){if(t===e)return f=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!i||!o)return t===d?-1:e===d?1:i?-1:o?1:l?L(l,t)-L(l,e):0;if(i===o)return lt(t,e);for(n=t;n=n.parentNode;)a.unshift(n);for(n=e;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?lt(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},ot.matches=function(t,e){return ot(t,null,null,e)},ot.matchesSelector=function(t,e){if((t.ownerDocument||t)!==d&&p(t),e=e.replace(U,"='$1']"),n.matchesSelector&&v&&!A[e+" "]&&(!m||!m.test(e))&&(!g||!g.test(e)))try{var r=y.call(t,e);if(r||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){}return ot(e,d,null,[t]).length>0},ot.contains=function(t,e){return(t.ownerDocument||t)!==d&&p(t),_(t,e)},ot.attr=function(t,e){(t.ownerDocument||t)!==d&&p(t);var i=r.attrHandle[e.toLowerCase()],o=i&&k.call(r.attrHandle,e.toLowerCase())?i(t,e,!v):void 0;return void 0!==o?o:n.attributes||!v?t.getAttribute(e):(o=t.getAttributeNode(e))&&o.specified?o.value:null},ot.escape=function(t){return(t+"").replace(et,nt)},ot.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},ot.uniqueSort=function(t){var e,r=[],i=0,o=0;if(f=!n.detectDuplicates,l=!n.sortStable&&t.slice(0),t.sort(S),f){for(;e=t[o++];)e===t[o]&&(i=r.push(o));for(;i--;)t.splice(r[i],1)}return l=null,t},i=ot.getText=function(t){var e,n="",r=0,o=t.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=i(t)}else if(3===o||4===o)return t.nodeValue}else for(;e=t[r++];)n+=i(e);return n},(r=ot.selectors={cacheLength:50,createPseudo:st,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(Z,tt),t[3]=(t[3]||t[4]||t[5]||"").replace(Z,tt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||ot.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&ot.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return K.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&z.test(n)&&(e=a(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(Z,tt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=T[t+" "];return e||(e=new RegExp("(^|"+R+")"+t+"("+R+"|$)"))&&T(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,e,n){return function(r){var i=ot.attr(r,t);return null==i?"!="===e:!e||(i+="","="===e?i===n:"!="===e?i!==n:"^="===e?n&&0===i.indexOf(n):"*="===e?n&&i.indexOf(n)>-1:"$="===e?n&&i.slice(-n.length)===n:"~="===e?(" "+i.replace(H," ")+" ").indexOf(n)>-1:"|="===e&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,u){var c,l,f,p,d,h,v=o!==a?"nextSibling":"previousSibling",g=e.parentNode,m=s&&e.nodeName.toLowerCase(),y=!u&&!s,_=!1;if(g){if(o){for(;v;){for(p=e;p=p[v];)if(s?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=v="only"===t&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(_=(d=(c=(l=(f=(p=g)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[t]||[])[0]===x&&c[1])&&c[2],p=d&&g.childNodes[d];p=++d&&p&&p[v]||(_=d=0)||h.pop();)if(1===p.nodeType&&++_&&p===e){l[t]=[x,d,_];break}}else if(y&&(_=d=(c=(l=(f=(p=e)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[t]||[])[0]===x&&c[1]),!1===_)for(;(p=++d&&p&&p[v]||(_=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++_||(y&&((l=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[t]=[x,_]),p!==e)););return(_-=i)===r||_%r==0&&_/r>=0}}},PSEUDO:function(t,e){var n,i=r.pseudos[t]||r.setFilters[t.toLowerCase()]||ot.error("unsupported pseudo: "+t);return i[b]?i(e):i.length>1?(n=[t,t,"",e],r.setFilters.hasOwnProperty(t.toLowerCase())?st(function(t,n){for(var r,o=i(t,e),a=o.length;a--;)t[r=L(t,o[a])]=!(n[r]=o[a])}):function(t){return i(t,0,n)}):i}},pseudos:{not:st(function(t){var e=[],n=[],r=s(t.replace(B,"$1"));return r[b]?st(function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}}),has:st(function(t){return function(e){return ot(t,e).length>0}}),contains:st(function(t){return t=t.replace(Z,tt),function(e){return(e.textContent||e.innerText||i(e)).indexOf(t)>-1}}),lang:st(function(t){return V.test(t||"")||ot.error("unsupported lang: "+t),t=t.replace(Z,tt).toLowerCase(),function(e){var n;do{if(n=v?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===h},focus:function(t){return t===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:dt(!1),disabled:dt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!r.pseudos.empty(t)},header:function(t){return G.test(t.nodeName)},input:function(t){return Q.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:ht(function(){return[0]}),last:ht(function(t,e){return[e-1]}),eq:ht(function(t,e,n){return[n<0?n+e:n]}),even:ht(function(t,e){for(var n=0;n=0;)t.push(r);return t}),gt:ht(function(t,e,n){for(var r=n<0?n+e:n;++r1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function bt(t,e,n,r,i){for(var o,a=[],s=0,u=t.length,c=null!=e;s-1&&(o[c]=!(a[c]=f))}}else m=bt(m===a?m.splice(h,m.length):m),i?i(null,a,m,u):N.apply(a,m)})}function xt(t){for(var e,n,i,o=t.length,a=r.relative[t[0].type],s=a||r.relative[" "],u=a?1:0,l=yt(function(t){return t===e},s,!0),f=yt(function(t){return L(e,t)>-1},s,!0),p=[function(t,n,r){var i=!a&&(r||n!==c)||((e=n).nodeType?l(t,n,r):f(t,n,r));return e=null,i}];u1&&_t(p),u>1&&mt(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(B,"$1"),n,u0,u=i.length>0,l=function(t,e,n,a,l){var f,h,g,m=0,y="0",_=t&&[],b=[],w=c,C=t||u&&r.find.TAG("*",l),T=x+=null==w?1:Math.random()||.1,E=C.length;for(l&&(c=e===d||e||l);y!==E&&null!=(f=C[y]);y++){if(u&&f){for(h=0,e||f.ownerDocument===d||(p(f),n=!v);g=i[h++];)if(g(f,e||d,n)){a.push(f);break}l&&(x=T)}s&&((f=!g&&f)&&m--,t&&_.push(f))}if(m+=y,s&&y!==m){for(h=0;g=o[h++];)g(_,b,e,n);if(t){if(m>0)for(;y--;)_[y]||b[y]||(b[y]=D.call(a));b=bt(b)}N.apply(a,b),l&&!t&&b.length>0&&m+o.length>1&&ot.uniqueSort(a)}return l&&(x=T,c=w),_},s?st(l):l))).selector=t}return g},u=ot.select=function(t,e,n,i){var o,u,c,l,f,p="function"==typeof t&&t,d=!i&&a(t=p.selector||t);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(c=u[0]).type&&9===e.nodeType&&v&&r.relative[u[1].type]){if(!(e=(r.find.ID(c.matches[0].replace(Z,tt),e)||[])[0]))return n;p&&(e=e.parentNode),t=t.slice(u.shift().value.length)}for(o=K.needsContext.test(t)?0:u.length;o--&&(c=u[o],!r.relative[l=c.type]);)if((f=r.find[l])&&(i=f(c.matches[0].replace(Z,tt),J.test(u[0].type)&&vt(e.parentNode)||e))){if(u.splice(o,1),!(t=i.length&&mt(u)))return N.apply(n,i),n;break}}return(p||s(t,d))(i,e,!v,n,!e||J.test(t)&&vt(e.parentNode)||e),n},n.sortStable=b.split("").sort(S).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ut(function(t){return 1&t.compareDocumentPosition(d.createElement("fieldset"))}),ut(function(t){return t.innerHTML=" ","#"===t.firstChild.getAttribute("href")})||ct("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),n.attributes&&ut(function(t){return t.innerHTML=" ",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||ct("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),ut(function(t){return null==t.getAttribute("disabled")})||ct($,function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null}),ot}(n);_.find=E,_.expr=E.selectors,_.expr[":"]=_.expr.pseudos,_.uniqueSort=_.unique=E.uniqueSort,_.text=E.getText,_.isXMLDoc=E.isXML,_.contains=E.contains,_.escapeSelector=E.escape;var A=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&_(t).is(n))break;r.push(t)}return r},S=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},k=_.expr.match.needsContext;function O(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,I=/^.[^:#\[\.,]*$/;function N(t,e,n){return _.isFunction(e)?_.grep(t,function(t,r){return!!e.call(t,r,t)!==n}):e.nodeType?_.grep(t,function(t){return t===e!==n}):"string"!=typeof e?_.grep(t,function(t){return f.call(e,t)>-1!==n}):I.test(e)?_.filter(e,t,n):(e=_.filter(e,t),_.grep(t,function(t){return f.call(e,t)>-1!==n&&1===t.nodeType}))}_.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?_.find.matchesSelector(r,t)?[r]:[]:_.find.matches(t,_.grep(e,function(t){return 1===t.nodeType}))},_.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(_(t).filter(function(){for(e=0;e1?_.uniqueSort(n):n},filter:function(t){return this.pushStack(N(this,t||[],!1))},not:function(t){return this.pushStack(N(this,t||[],!0))},is:function(t){return!!N(this,"string"==typeof t&&k.test(t)?_(t):t||[],!1).length}});var j,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(_.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||j,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:L.exec(t))||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof _?e[0]:e,_.merge(this,_.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:a,!0)),D.test(r[1])&&_.isPlainObject(e))for(r in e)_.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return(i=a.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):_.isFunction(t)?void 0!==n.ready?n.ready(t):t(_):_.makeArray(t,this)}).prototype=_.fn,j=_(a);var $=/^(?:parents|prev(?:Until|All))/,R={children:!0,contents:!0,next:!0,prev:!0};function P(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}_.fn.extend({has:function(t){var e=_(t,this),n=e.length;return this.filter(function(){for(var t=0;t-1:1===n.nodeType&&_.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?_.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?f.call(_(t),this[0]):f.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(_.uniqueSort(_.merge(this.get(),_(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),_.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return A(t,"parentNode")},parentsUntil:function(t,e,n){return A(t,"parentNode",n)},next:function(t){return P(t,"nextSibling")},prev:function(t){return P(t,"previousSibling")},nextAll:function(t){return A(t,"nextSibling")},prevAll:function(t){return A(t,"previousSibling")},nextUntil:function(t,e,n){return A(t,"nextSibling",n)},prevUntil:function(t,e,n){return A(t,"previousSibling",n)},siblings:function(t){return S((t.parentNode||{}).firstChild,t)},children:function(t){return S(t.firstChild)},contents:function(t){return O(t,"iframe")?t.contentDocument:(O(t,"template")&&(t=t.content||t),_.merge([],t.childNodes))}},function(t,e){_.fn[t]=function(n,r){var i=_.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=_.filter(r,i)),this.length>1&&(R[t]||_.uniqueSort(i),$.test(t)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function F(t){return t}function H(t){throw t}function B(t,e,n,r){var i;try{t&&_.isFunction(i=t.promise)?i.call(t).done(e).fail(n):t&&_.isFunction(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}_.Callbacks=function(t){var e,n;t="string"==typeof t?(e=t,n={},_.each(e.match(M)||[],function(t,e){n[e]=!0}),n):_.extend({},t);var r,i,o,a,s=[],u=[],c=-1,l=function(){for(a=a||t.once,o=r=!0;u.length;c=-1)for(i=u.shift();++c-1;)s.splice(n,1),n<=c&&c--}),this},has:function(t){return t?_.inArray(t,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=i="",this},disabled:function(){return!s},lock:function(){return a=u=[],i||r||(s=i=""),this},locked:function(){return!!a},fireWith:function(t,e){return a||(e=[t,(e=e||[]).slice?e.slice():e],u.push(e),r||l()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},_.extend({Deferred:function(t){var e=[["notify","progress",_.Callbacks("memory"),_.Callbacks("memory"),2],["resolve","done",_.Callbacks("once memory"),_.Callbacks("once memory"),0,"resolved"],["reject","fail",_.Callbacks("once memory"),_.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return i.then(null,t)},pipe:function(){var t=arguments;return _.Deferred(function(n){_.each(e,function(e,r){var i=_.isFunction(t[r[4]])&&t[r[4]];o[r[1]](function(){var t=i&&i.apply(this,arguments);t&&_.isFunction(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)})}),t=null}).promise()},then:function(t,r,i){var o=0;function a(t,e,r,i){return function(){var s=this,u=arguments,c=function(){var n,c;if(!(t=o&&(r!==H&&(s=void 0,u=[n]),e.rejectWith(s,u))}};t?l():(_.Deferred.getStackHook&&(l.stackTrace=_.Deferred.getStackHook()),n.setTimeout(l))}}return _.Deferred(function(n){e[0][3].add(a(0,n,_.isFunction(i)?i:F,n.notifyWith)),e[1][3].add(a(0,n,_.isFunction(t)?t:F)),e[2][3].add(a(0,n,_.isFunction(r)?r:H))}).promise()},promise:function(t){return null!=t?_.extend(t,i):i}},o={};return _.each(e,function(t,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add(function(){r=s},e[3-t][2].disable,e[0][2].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(t){var e=arguments.length,n=e,r=Array(n),i=u.call(arguments),o=_.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?u.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(B(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||_.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)B(i[n],a(n),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;_.Deferred.exceptionHook=function(t,e){n.console&&n.console.warn&&t&&W.test(t.name)&&n.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},_.readyException=function(t){n.setTimeout(function(){throw t})};var q=_.Deferred();function U(){a.removeEventListener("DOMContentLoaded",U),n.removeEventListener("load",U),_.ready()}_.fn.ready=function(t){return q.then(t).catch(function(t){_.readyException(t)}),this},_.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--_.readyWait:_.isReady)||(_.isReady=!0,!0!==t&&--_.readyWait>0||q.resolveWith(a,[_]))}}),_.ready.then=q.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(_.ready):(a.addEventListener("DOMContentLoaded",U),n.addEventListener("load",U));var z=function(t,e,n,r,i,o,a){var s=0,u=t.length,c=null==n;if("object"===_.type(n)){i=!0;for(s in n)z(t,e,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,_.isFunction(r)||(a=!0),c&&(a?(e.call(t,r),e=null):(c=e,e=function(t,e,n){return c.call(_(t),n)})),e))for(;s1,null,!0)},removeData:function(t){return this.each(function(){G.remove(this,t)})}}),_.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=Q.get(t,e),n&&(!r||Array.isArray(n)?r=Q.access(t,e,_.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){e=e||"fx";var n=_.queue(t,e),r=n.length,i=n.shift(),o=_._queueHooks(t,e);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,function(){_.dequeue(t,e)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Q.get(t,n)||Q.access(t,n,{empty:_.Callbacks("once memory").add(function(){Q.remove(t,[e+"queue",n])})})}}),_.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]+)/i,ct=/^$|\/(?:java|ecma)script/i,lt={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ft(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&O(t,e)?_.merge([t],n):n}function pt(t,e){for(var n=0,r=t.length;n-1)i&&i.push(o);else if(c=_.contains(o.ownerDocument,o),a=ft(f.appendChild(o),"script"),c&&pt(a),n)for(l=0;o=a[l++];)ct.test(o.type||"")&&n.push(o);return f}dt=a.createDocumentFragment().appendChild(a.createElement("div")),(ht=a.createElement("input")).setAttribute("type","radio"),ht.setAttribute("checked","checked"),ht.setAttribute("name","t"),dt.appendChild(ht),m.checkClone=dt.cloneNode(!0).cloneNode(!0).lastChild.checked,dt.innerHTML="",m.noCloneChecked=!!dt.cloneNode(!0).lastChild.defaultValue;var mt=a.documentElement,yt=/^key/,_t=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,bt=/^([^.]*)(?:\.(.+)|)/;function wt(){return!0}function xt(){return!1}function Ct(){try{return a.activeElement}catch(t){}}function Tt(t,e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=void 0);for(s in e)Tt(t,s,n,r,e[s],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=xt;else if(!i)return t;return 1===o&&(a=i,(i=function(t){return _().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=_.guid++)),t.each(function(){_.event.add(this,e,i,r,n)})}_.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=Q.get(t);if(g)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&_.find.matchesSelector(mt,i),n.guid||(n.guid=_.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(e){return void 0!==_&&_.event.triggered!==e.type?_.event.dispatch.apply(t,arguments):void 0}),c=(e=(e||"").match(M)||[""]).length;c--;)d=v=(s=bt.exec(e[c])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=_.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=_.event.special[d]||{},l=_.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&_.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),_.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,g=Q.hasData(t)&&Q.get(t);if(g&&(u=g.events)){for(c=(e=(e||"").match(M)||[""]).length;c--;)if(d=v=(s=bt.exec(e[c])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=_.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)l=p[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(t,l));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(t,h,g.handle)||_.removeEvent(t,d,g.handle),delete u[d])}else for(d in u)_.event.remove(t,d+e[c],n,r,!0);_.isEmptyObject(u)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=_.event.fix(t),u=new Array(arguments.length),c=(Q.get(this,"events")||{})[s.type]||[],l=_.event.special[s.type]||{};for(u[0]=s,e=1;e=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||!0!==c.disabled)){for(o=[],a={},n=0;n-1:_.find(i,this,null,[c]).length),a[i]&&o.push(r);o.length&&s.push({elem:c,handlers:o})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,At=/
diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss
new file mode 100644
index 0000000..1c44aff
--- /dev/null
+++ b/resources/assets/sass/_variables.scss
@@ -0,0 +1,18 @@
+
+// Body
+$body-bg: #f5f8fa;
+
+// Typography
+$font-family-sans-serif: "Raleway", sans-serif;
+$font-size-base: 0.9rem;
+$line-height-base: 1.6;
+$text-color: #636b6f;
+
+// Navbar
+$navbar-default-bg: #fff;
+
+// Buttons
+$btn-default-color: $text-color;
+
+// Panels
+$panel-default-heading-bg: #fff;
diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss
new file mode 100644
index 0000000..0077cb1
--- /dev/null
+++ b/resources/assets/sass/app.scss
@@ -0,0 +1,14 @@
+
+// Fonts
+@import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
+
+// Variables
+@import "variables";
+
+// Bootstrap
+@import '~bootstrap/scss/bootstrap';
+
+.navbar-laravel {
+ background-color: #fff;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
+}
diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php
new file mode 100644
index 0000000..ad55d91
--- /dev/null
+++ b/resources/lang/de/pagination.php
@@ -0,0 +1,20 @@
+ '« Vorherige',
+ 'next' => 'Nächste »',
+ 'start' => 'Anfang',
+
+];
diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php
new file mode 100644
index 0000000..e5506df
--- /dev/null
+++ b/resources/lang/en/auth.php
@@ -0,0 +1,19 @@
+ 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+];
diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php
new file mode 100644
index 0000000..d481411
--- /dev/null
+++ b/resources/lang/en/pagination.php
@@ -0,0 +1,19 @@
+ '« Previous',
+ 'next' => 'Next »',
+
+];
diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php
new file mode 100644
index 0000000..e5544d2
--- /dev/null
+++ b/resources/lang/en/passwords.php
@@ -0,0 +1,22 @@
+ 'Passwords must be at least six characters and match the confirmation.',
+ 'reset' => 'Your password has been reset!',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'token' => 'This password reset token is invalid.',
+ 'user' => "We can't find a user with that e-mail address.",
+
+];
diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php
new file mode 100644
index 0000000..edc036d
--- /dev/null
+++ b/resources/lang/en/validation.php
@@ -0,0 +1,121 @@
+ 'The :attribute must be accepted.',
+ 'active_url' => 'The :attribute is not a valid URL.',
+ 'after' => 'The :attribute must be a date after :date.',
+ 'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
+ 'alpha' => 'The :attribute may only contain letters.',
+ 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
+ 'alpha_num' => 'The :attribute may only contain letters and numbers.',
+ 'array' => 'The :attribute must be an array.',
+ 'before' => 'The :attribute must be a date before :date.',
+ 'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
+ 'between' => [
+ 'numeric' => 'The :attribute must be between :min and :max.',
+ 'file' => 'The :attribute must be between :min and :max kilobytes.',
+ 'string' => 'The :attribute must be between :min and :max characters.',
+ 'array' => 'The :attribute must have between :min and :max items.',
+ ],
+ 'boolean' => 'The :attribute field must be true or false.',
+ 'confirmed' => 'The :attribute confirmation does not match.',
+ 'date' => 'The :attribute is not a valid date.',
+ 'date_format' => 'The :attribute does not match the format :format.',
+ 'different' => 'The :attribute and :other must be different.',
+ 'digits' => 'The :attribute must be :digits digits.',
+ 'digits_between' => 'The :attribute must be between :min and :max digits.',
+ 'dimensions' => 'The :attribute has invalid image dimensions.',
+ 'distinct' => 'The :attribute field has a duplicate value.',
+ 'email' => 'The :attribute must be a valid email address.',
+ 'exists' => 'The selected :attribute is invalid.',
+ 'file' => 'The :attribute must be a file.',
+ 'filled' => 'The :attribute field must have a value.',
+ 'image' => 'The :attribute must be an image.',
+ 'in' => 'The selected :attribute is invalid.',
+ 'in_array' => 'The :attribute field does not exist in :other.',
+ 'integer' => 'The :attribute must be an integer.',
+ 'ip' => 'The :attribute must be a valid IP address.',
+ 'ipv4' => 'The :attribute must be a valid IPv4 address.',
+ 'ipv6' => 'The :attribute must be a valid IPv6 address.',
+ 'json' => 'The :attribute must be a valid JSON string.',
+ 'max' => [
+ 'numeric' => 'The :attribute may not be greater than :max.',
+ 'file' => 'The :attribute may not be greater than :max kilobytes.',
+ 'string' => 'The :attribute may not be greater than :max characters.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'mimetypes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'present' => 'The :attribute field must be present.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_unless' => 'The :attribute field is required unless :other is in :values.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'uploaded' => 'The :attribute failed to upload.',
+ 'url' => 'The :attribute format is invalid.',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Language Lines
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify custom validation messages for attributes using the
+ | convention "attribute.rule" to name the lines. This makes it quick to
+ | specify a specific custom language line for a given attribute rule.
+ |
+ */
+
+ 'custom' => [
+ 'attribute-name' => [
+ 'rule-name' => 'custom-message',
+ ],
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom Validation Attributes
+ |--------------------------------------------------------------------------
+ |
+ | The following language lines are used to swap attribute place-holders
+ | with something more reader friendly such as E-Mail Address instead
+ | of "email". This simply helps us make messages a little cleaner.
+ |
+ */
+
+ 'attributes' => [],
+
+];
diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php
new file mode 100644
index 0000000..7149031
--- /dev/null
+++ b/resources/views/index.blade.php
@@ -0,0 +1,162 @@
+@extends('layouts.base')
+
+@section('header')
+Angebote
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
Keine Angebote
+ Momentan liegen keine Angebote vor. Probieren Sie es später noch einmal.
+
+spirit_type == "RSS-Feeds") {
+ #$offer->angebotsname = "dem " . $offer->angebotsname;
+ } else if ( !in_array(strtolower($offer->spirit_type), $views) ) {
+ $offer->url = "misc";
+ $offer->angebotsname = "weiteren Angeboten";
+ $offer->linktext = "Weitere günstige Angebote entdecken und bis zu " . $offer->procent . "% sparen.";
+ $offer->spirit_type = "Verschiedenes";
+ } else {
+ $offer->url = lcfirst($offer->url) ;
+ $offer->angebotsname = "den " . $offer->angebotsname . "-Angeboten";
+ $offer->linktext = "Finde den günstigsten ". $offer->spirit_type ." und spare bis zu " . $offer->procent . "%.";
+ }
+
+ if ( $count % 2 == 0) {
+?>
+
+spirit_type ) {
+
+?>
+
+
+
+
+
+
+
{{ $offer->procent}} %
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Was passiert hier?
+
+Auf dieser Webseite kuratiere ich die aktuellen Sonderangebote der wichtigsten Spirituosenhändler. Neue Angebote werden automatisch erkannt und hinzugefügt; nicht mehr gültige Angebote werden entfernt.
+
+Wie häufig werden die Angebote aktualisiert?
+
+Mehrmals täglich.
+
+Gibt es Push-Nachrichten?
+
+Noch nicht. Momentan ist die einzige Möglichkeit den Angeboten via RSS-Feed zu folgen. Mitteilungen per Push, E-Mail oder Twitter sind jedoch geplant.
+
+
+
+@endsection
+
+
+@section('scripts')
+
+@endsection
diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php
new file mode 100644
index 0000000..b7a7dd8
--- /dev/null
+++ b/resources/views/layouts/base.blade.php
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+ @yield('header') | {{ env("APP_BRANDING") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @yield('feed')
+ @yield('css')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @include('snippets.navbar')
+
+ @yield('content')
+
+ @include('snippets.footer')
+
+
+
+
+
+
+
+ @yield('scripts')
+
+
diff --git a/resources/views/offer.blade.php b/resources/views/offer.blade.php
new file mode 100644
index 0000000..636f4ce
--- /dev/null
+++ b/resources/views/offer.blade.php
@@ -0,0 +1,167 @@
+@extends('layouts.base')
+
+@section('header')
+{{ ucwords($title) }}
+@endsection
+
+@section('feed')
+ {!! Feed::link(secure_url($rss_feed) . "/", 'atom', 'Feed von ' . ucwords($spirit_type) . '-Angeboten', 'de') !!}
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+ {{ $data->appends(Input::except('page'))->links('paginate') }}
+
+count() ) {
+ /* Keine Angebote */
+?>
+
+
Keine Angebote
+ Momentan liegen keine {{ $title }} vor. Probieren Sie es später noch einmal.
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $offer->procent}} %
+
+
+
+
+
+
+
+
{{ $offer->name }}
+
+
+
+
+ Neuer Preis: {{ TF::fF($offer->discounted_price) }} €
+
+ statt {{ TF::fF($offer->original_price) }} €
+
+ {{ TF::fF($offer->base_price ) }} € / Liter
+
+
+
+ Alkohol: {{ TF::fF($offer->abv) }} %
+
+ Volumen: {{ TF::fF($offer->volume) }} Liter
+
+ Versand: {{ TF::fF($offer->shipping_costs) }} €
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $data->appends(Input::except('page'))->links('paginate') }}
+
+
+
+
+
+
+@endsection
+
+@section('scripts')
+
+@endsection
diff --git a/resources/views/paginate.blade.php b/resources/views/paginate.blade.php
new file mode 100644
index 0000000..1697097
--- /dev/null
+++ b/resources/views/paginate.blade.php
@@ -0,0 +1,36 @@
+@if ($paginator->hasPages())
+
+@endif
diff --git a/resources/views/search.blade.php b/resources/views/search.blade.php
new file mode 100644
index 0000000..2f381d7
--- /dev/null
+++ b/resources/views/search.blade.php
@@ -0,0 +1,175 @@
+@extends('layouts.base')
+
+@section('header')
+Finde den besten Deal
+@endsection
+
+@section('feed')
+ {!! Feed::link(secure_url($rss_feed), 'atom', 'Feed von ' . $search_phrase , 'de') !!}
+@endsection
+
+@section('content')
+
+
+
+
+
diff --git a/resources/views/snippets/navbar.blade.php b/resources/views/snippets/navbar.blade.php
new file mode 100644
index 0000000..26e2963
--- /dev/null
+++ b/resources/views/snippets/navbar.blade.php
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
Finde den besten Deal in Sachen Spirituosen
+
+
+
+
+
diff --git a/resources/views/snippets/sortbuttons.blade.php b/resources/views/snippets/sortbuttons.blade.php
new file mode 100644
index 0000000..71ea1e5
--- /dev/null
+++ b/resources/views/snippets/sortbuttons.blade.php
@@ -0,0 +1,109 @@
+
+
+
+ Filter Anzeigen
+
+
+
+
+
+
Sortieren nach: {{ $filter . " (" . $order . ")" }}
+
+
+
diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php
new file mode 100644
index 0000000..3f98455
--- /dev/null
+++ b/resources/views/vendor/pagination/bootstrap-4.blade.php
@@ -0,0 +1,36 @@
+@if ($paginator->hasPages())
+
+@endif
diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php
new file mode 100644
index 0000000..4e795ff
--- /dev/null
+++ b/resources/views/vendor/pagination/default.blade.php
@@ -0,0 +1,36 @@
+@if ($paginator->hasPages())
+
+@endif
diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php
new file mode 100644
index 0000000..c6e0d21
--- /dev/null
+++ b/resources/views/vendor/pagination/semantic-ui.blade.php
@@ -0,0 +1,36 @@
+@if ($paginator->hasPages())
+
+@endif
diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php
new file mode 100644
index 0000000..a9a18d3
--- /dev/null
+++ b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php
@@ -0,0 +1,17 @@
+@if ($paginator->hasPages())
+
+@endif
diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php
new file mode 100644
index 0000000..1801609
--- /dev/null
+++ b/resources/views/vendor/pagination/simple-default.blade.php
@@ -0,0 +1,17 @@
+@if ($paginator->hasPages())
+
+@endif
diff --git a/routes/api.php b/routes/api.php
new file mode 100644
index 0000000..c641ca5
--- /dev/null
+++ b/routes/api.php
@@ -0,0 +1,18 @@
+get('/user', function (Request $request) {
+ return $request->user();
+});
diff --git a/routes/channels.php b/routes/channels.php
new file mode 100644
index 0000000..f16a20b
--- /dev/null
+++ b/routes/channels.php
@@ -0,0 +1,16 @@
+id === (int) $id;
+});
diff --git a/routes/console.php b/routes/console.php
new file mode 100644
index 0000000..75dd0cd
--- /dev/null
+++ b/routes/console.php
@@ -0,0 +1,18 @@
+comment(Inspiring::quote());
+})->describe('Display an inspiring quote');
diff --git a/routes/web.php b/routes/web.php
new file mode 100644
index 0000000..8011a5d
--- /dev/null
+++ b/routes/web.php
@@ -0,0 +1,33 @@
+name('whisky');
+
+Route::get('/angebote/whisky', 'OfferController@showPage')->name('whisky');
+Route::get('/angebote/wodka', 'OfferController@showPage')->name('wodka');
+Route::get('/angebote/gin', 'OfferController@showPage')->name('gin');
+Route::get('/angebote/rum', 'OfferController@showPage')->name('rum');
+Route::get('/angebote/misc', 'OfferController@showPage')->name('misc');
+Route::get('/angebote/all', 'OfferController@showPage')->name('all');
+
+Route::get('/angebote/search', 'SearchController@showPage')->name('searchp');
+
+Route::get('/angebote/whisky/feed', 'RSSController@showPage')->name('whisky_feed');
+Route::get('/angebote/wodka/feed', 'RSSController@showPage')->name('wodka_feed');
+Route::get('/angebote/gin/feed', 'RSSController@showPage')->name('gin_feed');
+Route::get('/angebote/rum/feed', 'RSSController@showPage')->name('rum_feed');
+Route::get('/angebote/misc/feed', 'RSSController@showPage')->name('misc_feed');
+Route::get('/angebote/all/feed', 'RSSController@showPage')->name('all_feed');
+Route::get('/angebote/search/feed', 'RSSController@showPage')->name('search_feed');
+
+Route::get('/angebote/_/api/lookup', 'LookupController@showPage')->name('lookup');
diff --git a/server.php b/server.php
new file mode 100644
index 0000000..5fb6379
--- /dev/null
+++ b/server.php
@@ -0,0 +1,21 @@
+
+ */
+
+$uri = urldecode(
+ parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
+);
+
+// This file allows us to emulate Apache's "mod_rewrite" functionality from the
+// built-in PHP web server. This provides a convenient way to test a Laravel
+// application without having installed a "real" web server software here.
+if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
+ return false;
+}
+
+require_once __DIR__.'/public/index.php';
diff --git a/storage/app/.gitignore b/storage/app/.gitignore
new file mode 100755
index 0000000..8f4803c
--- /dev/null
+++ b/storage/app/.gitignore
@@ -0,0 +1,3 @@
+*
+!public/
+!.gitignore
diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore
new file mode 100755
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/app/public/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore
new file mode 100755
index 0000000..b02b700
--- /dev/null
+++ b/storage/framework/.gitignore
@@ -0,0 +1,8 @@
+config.php
+routes.php
+schedule-*
+compiled.php
+services.json
+events.scanned.php
+routes.scanned.php
+down
diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore
new file mode 100755
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/cache/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore
new file mode 100755
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/sessions/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore
new file mode 100755
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/testing/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore
new file mode 100755
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/views/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore
new file mode 100755
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/logs/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php
new file mode 100644
index 0000000..ff133fb
--- /dev/null
+++ b/tests/CreatesApplication.php
@@ -0,0 +1,25 @@
+make(Kernel::class)->bootstrap();
+
+ Hash::driver('bcrypt')->setRounds(4);
+
+ return $app;
+ }
+}
diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php
new file mode 100644
index 0000000..f31e495
--- /dev/null
+++ b/tests/Feature/ExampleTest.php
@@ -0,0 +1,21 @@
+get('/');
+
+ $response->assertStatus(200);
+ }
+}
diff --git a/tests/TestCase.php b/tests/TestCase.php
new file mode 100644
index 0000000..2932d4a
--- /dev/null
+++ b/tests/TestCase.php
@@ -0,0 +1,10 @@
+assertTrue(true);
+ }
+}
diff --git a/webpack.mix.js b/webpack.mix.js
new file mode 100644
index 0000000..72fdbb1
--- /dev/null
+++ b/webpack.mix.js
@@ -0,0 +1,15 @@
+let mix = require('laravel-mix');
+
+/*
+ |--------------------------------------------------------------------------
+ | Mix Asset Management
+ |--------------------------------------------------------------------------
+ |
+ | Mix provides a clean, fluent API for defining some Webpack build steps
+ | for your Laravel application. By default, we are compiling the Sass
+ | file for the application as well as bundling up all the JS files.
+ |
+ */
+
+mix.js('resources/assets/js/app.js', 'public/js')
+ .sass('resources/assets/sass/app.scss', 'public/css');
--
cgit v1.2.3