From 8dc1f1b0482735e3cf4a2776ba233133c30ee4cf Mon Sep 17 00:00:00 2001 From: Arno Kaimbacher Date: Mon, 6 Aug 2018 14:30:51 +0200 Subject: [PATCH] my changes --- .env | 31 +- .gitignore | 21 +- .vscode/.gitignore | 2 + app/Book.php | 75 +- app/Category.php | 17 - app/Collection.php | 14 + app/Dataset.php | 184 + app/DatasetFinder.php | 112 + app/File.php | 19 + app/Fine.php | 12 - app/Http/Controllers/Auth/AuthController.php | 41 - .../Auth/ForgotPasswordController.php | 32 + app/Http/Controllers/Auth/LoginController.php | 51 + .../Controllers/Auth/PasswordController.php | 38 - .../Controllers/Auth/RegisterController.php | 71 + .../Auth/ResetPasswordController.php | 39 + app/Http/Controllers/BookController.php | 148 +- app/Http/Controllers/BorrowController.php | 107 + app/Http/Controllers/CategoryController.php | 85 - app/Http/Controllers/CollectionController.php | 96 + app/Http/Controllers/Controller.php | 14 +- app/Http/Controllers/FinesController.php | 50 - app/Http/Controllers/HomeController.php | 85 + .../Controllers/Oai/RequestController.php | 417 + app/Http/Controllers/PagesController.php | 75 +- app/Http/Controllers/PeminjamanController.php | 148 - app/Http/Controllers/PeriodeController.php | 91 +- .../Controllers/Publish/IndexController.php | 219 + app/Http/Controllers/SearchController.php | 162 + .../Settings/CategoryController.php | 96 + .../Settings/DatasetController.php | 200 + .../Settings/LicenseController.php | 47 + .../Controllers/Settings/PersonController.php | 133 + .../Controllers/Settings/RoleController.php | 108 + .../Controllers/Settings/UserController.php | 169 + app/Http/Controllers/ShelfController.php | 103 +- app/Http/Controllers/SitelinkController.php | 61 + app/Http/Controllers/StaticPageController.php | 25 + app/Http/Controllers/StudentController.php | 114 - app/Http/Kernel.php | 81 +- app/Http/Middleware/Authenticate.php | 79 +- app/Http/Middleware/EncryptCookies.php | 16 + app/Http/Middleware/PermissionMiddleware.php | 45 + .../Middleware/RedirectIfAuthenticated.php | 59 +- app/Http/Middleware/TrimStrings.php | 25 + app/Http/Middleware/VerifyCsrfToken.php | 30 +- app/Http/Requests/BookRequest.php | 53 +- app/Http/Requests/CategoryRequest.php | 31 - app/Http/Requests/DocumentRequest.php | 33 + app/Http/Requests/FinesRequest.php | 30 - app/Http/Requests/LicenseRequest.php | 38 + app/Http/Requests/PeminjamanRequest.php | 47 +- app/Http/Requests/PeriodeRequest.php | 48 +- app/Http/Requests/PersonRequest.php | 34 + app/Http/Requests/ProjectRequest.php | 32 + app/Http/Requests/Request.php | 10 +- app/Http/Requests/ShelfRequest.php | 47 +- app/Http/Requests/StudentRequest.php | 31 - app/Http/routes.php | 195 +- app/Language.php | 13 + app/Library/Search/Navigation.php | 68 + app/Library/Search/SearchResult.php | 313 + app/Library/Search/SolariumAdapter.php | 218 + app/Library/Util/QueryBuilder.php | 257 + app/Library/Util/SearchParameter.php | 452 + app/Library/Util/SearchResultMatch.php | 290 + app/Library/Util/Searchtypes.php | 30 + app/Library/Util/SolrSearchQuery.php | 413 + app/Library/Util/SolrSearchSearcher.php | 94 + app/Library/Xml/Conf.php | 58 + app/Library/Xml/DatasetExtension.php | 284 + app/Library/Xml/Field.php | 213 + app/Library/Xml/Strategy.php | 232 + app/Library/Xml/XmlModel.php | 180 + app/License.php | 29 + app/Periode.php | 11 - app/Permission.php | 112 + app/Person.php | 49 + app/Project.php | 29 + app/Providers/AppServiceProvider.php | 4 +- app/Providers/BroadcastServiceProvider.php | 24 + app/Providers/BusServiceProvider.php | 34 - app/Providers/EventServiceProvider.php | 12 +- app/Providers/RouteServiceProvider.php | 53 +- app/Providers/SolariumServiceProvider.php | 43 + app/Role.php | 122 +- app/Services/Registrar.php | 63 +- app/Shelf.php | 21 +- app/Student.php | 42 - app/Title.php | 21 + app/Transaction.php | 64 +- app/User.php | 114 +- app/XmlCache.php | 81 + artisan | 1 + bootstrap/app.php | 15 +- bootstrap/autoload.php | 5 +- bootstrap/cache/.gitignore | 2 + composer.json | 36 +- composer.lock | 3496 ++-- config/app.php | 379 +- config/auth.php | 143 +- config/cache.php | 122 +- config/compile.php | 60 +- config/database.php | 188 +- config/enums.php | 20 + config/filesystems.php | 119 +- config/mail.php | 202 +- config/permission.php | 92 + config/queue.php | 148 +- config/services.php | 54 +- config/session.php | 251 +- config/solarium.php | 12 + config/view.php | 49 +- database/.gitignore | 1 + .../2014_10_12_000000_create_users_table.php | 2 +- .../2015_06_09_041212_create_fines_table.php | 33 - ...015_06_09_041219_create_periodes_table.php | 1 + ...06_01_100607_create_transactions_table.php | 46 + .../2017_06_01_104359_create_books_table.php | 41 + ..._07_05_091036_create_collections_table.php | 36 + ...17_07_05_124312_create_documents_table.php | 32 + ...3454_create_link_documents_collections.php | 43 + ...2018_02_22_134500_create_persons_table.php | 59 + ..._06_25_135711_create_permission_tables.php | 91 + ...8_02_19_120518_create_categories_table.php | 32 + .../2018_02_20_134555_create_books_table.php | 39 + ...18_02_20_135411_create_documents_table.php | 33 + database/seeds/DatabaseSeeder.php | 348 +- package-lock.json | 14376 ++++++++++++++++ package.json | 15 +- public/.htaccess | 12 +- public/css/app.css | 2 +- public/css/app1.css | 1 + public/css/font-awesome.css | 2178 +++ public/css/grids-responsive.css | 861 + public/css/page.css | 374 + public/css/pure.css | 1475 ++ public/css/styles.css | 1282 ++ public/favicon.ico | Bin 0 -> 894 bytes public/fonts/FontAwesome.otf | Bin 0 -> 123112 bytes .../glyphicons-halflings-regular.eot | Bin .../glyphicons-halflings-regular.svg | 0 .../glyphicons-halflings-regular.ttf | Bin .../glyphicons-halflings-regular.woff | Bin .../glyphicons-halflings-regular.woff2 | Bin public/fonts/fontawesome-webfont.eot | Bin 0 -> 75220 bytes public/fonts/fontawesome-webfont.svg | 685 + public/fonts/fontawesome-webfont.ttf | Bin 0 -> 150920 bytes public/fonts/fontawesome-webfont.woff | Bin 0 -> 89076 bytes public/fonts/fontawesome-webfont.woff2 | Bin 0 -> 70728 bytes public/img/feed_small.png | Bin 0 -> 395 bytes public/img/theme/icon-author.gif | Bin 0 -> 142 bytes public/img/theme/icon-on-off.png | Bin 0 -> 883 bytes public/img/theme/icon-title.gif | Bin 0 -> 156 bytes public/index.php | 2 +- public/js/lib.js | 1 + public/mix-manifest.json | 4 + public/oai-pmh.xslt | 422 + .../storage/files/productImage-1533309344.png | Bin 0 -> 469 bytes public/web.config | 34 + public/xsl/oai2.xslt | 659 + readme.md | 4 +- resources/assets/js/bootstrap.js | 27 + resources/assets/js/lib.js | 22 + resources/assets/sass/app1.scss | 10 + resources/assets/sass/style.scss | 35 + resources/lang/en/doctypes.php | 33 + resources/lang/en/imprint.en.txt | 15 + resources/lang/en/resources.php | 47 + resources/views/app.blade.php | 48 - resources/views/auth/login.blade.php | 95 +- resources/views/auth/password.blade.php | 50 - .../views/auth/passwords/email.blade.php | 47 + .../views/auth/passwords/reset.blade.php | 70 + resources/views/auth/register.blade.php | 4 +- resources/views/auth/reset.blade.php | 59 - resources/views/errors/401.blade.php | 14 + resources/views/errors/_errors.blade.php | 3 +- resources/views/home.blade.php | 23 + resources/views/layouts/app.blade.php | 123 + resources/views/layouts/old_app.blade.php | 80 + resources/views/lms/books.blade.php | 54 - resources/views/lms/index.blade.php | 7 - .../views/lms/peminjaman/laporan.blade.php | 43 - .../views/lms/peminjaman/peminjaman.blade.php | 73 - .../lms/settings/category/_form.blade.php | 10 - .../views/lms/settings/category/add.blade.php | 28 - .../lms/settings/category/category.blade.php | 45 - .../lms/settings/category/edit.blade.php | 28 - .../views/lms/settings/fine/_form.blade.php | 15 - .../views/lms/settings/fine/edit.blade.php | 28 - .../views/lms/settings/fine/fine.blade.php | 44 - .../lms/settings/student/_form.blade.php | 10 - .../views/lms/settings/student/add.blade.php | 28 - .../views/lms/settings/student/edit.blade.php | 28 - .../lms/settings/student/student.blade.php | 64 - resources/views/oai/oai.blade.php | 3 + resources/views/partials/flash.blade.php | 4 +- resources/views/partials/nav.blade.php | 185 +- .../views/publish/create-step1.blade.php | 50 + .../views/publish/create-step2.blade.php | 106 + .../views/publish/create-step3.blade.php | 67 + resources/views/rdr/borrow/borrow.blade.php | 74 + .../borrow}/histori.blade.php | 10 +- resources/views/rdr/borrow/report.blade.php | 41 + .../views/rdr/document/documents.blade.php | 44 + resources/views/rdr/document/show.blade.php | 33 + resources/views/rdr/home/about.blade.php | 24 + resources/views/rdr/home/contact.blade.php | 55 + resources/views/rdr/home/imprint.blade.php | 20 + resources/views/rdr/home/index.blade.php | 42 + resources/views/rdr/home/news.blade.php | 36 + .../settings/book/_form.blade.php | 10 +- .../{lms => rdr}/settings/book/add.blade.php | 6 +- .../{lms => rdr}/settings/book/book.blade.php | 24 +- .../{lms => rdr}/settings/book/edit.blade.php | 10 +- .../settings/collection/collection.blade.php | 60 + .../settings/periode/_form.blade.php | 0 .../settings/periode/edit.blade.php | 6 +- .../settings/periode/periode.blade.php | 8 +- .../settings/shelf/_form.blade.php | 0 .../{lms => rdr}/settings/shelf/add.blade.php | 6 +- .../settings/shelf/edit.blade.php | 6 +- .../settings/shelf/shelf.blade.php | 20 +- .../views/rdr/setup/imprint/edit.blade.php | 29 + resources/views/rdr/sitelink/index.blade.php | 50 + .../views/rdr/solrsearch/index.blade.php | 75 + .../views/rdr/solrsearch/pagination.blade.php | 22 + .../rdr/solrsearch/simpleSearchForm.blade.php | 63 + .../views/settings/document/_form.blade.php | 123 + .../settings/document/document.blade.php | 96 + .../views/settings/document/edit.blade.php | 31 + .../views/settings/document/show.blade.php | 31 + .../views/settings/license/_form.blade.php | 77 + .../views/settings/license/edit.blade.php | 28 + .../views/settings/license/license.blade.php | 43 + .../views/settings/person/_form.blade.php | 47 + resources/views/settings/person/add.blade.php | 27 + .../views/settings/person/edit.blade.php | 38 + .../views/settings/person/person.blade.php | 75 + .../views/settings/project/_form.blade.php | 18 + .../views/settings/project/add.blade.php | 27 + .../views/settings/project/category.blade.php | 44 + .../views/settings/project/edit.blade.php | 31 + .../views/settings/role/create.blade.php | 57 + resources/views/settings/role/edit.blade.php | 76 + resources/views/settings/role/role.blade.php | 51 + .../views/settings/user/create.blade.php | 93 + resources/views/settings/user/edit.blade.php | 93 + resources/views/settings/user/user.blade.php | 67 + .../vendor/pagination/bootstrap-4.blade.php | 36 + .../views/vendor/pagination/default.blade.php | 34 + .../vendor/pagination/semantic-ui.blade.php | 36 + .../pagination/simple-bootstrap-4.blade.php | 17 + .../pagination/simple-default.blade.php | 17 + routes/api.php | 21 + routes/channels.php | 16 + routes/console.php | 18 + routes/web.php | 277 + server.php | 7 +- storage/.gitignore | 2 + tests/ExampleTest.php | 24 +- webpack.mix.js | 21 + 263 files changed, 36882 insertions(+), 4453 deletions(-) create mode 100644 .vscode/.gitignore delete mode 100755 app/Category.php create mode 100644 app/Collection.php create mode 100644 app/Dataset.php create mode 100644 app/DatasetFinder.php create mode 100644 app/File.php delete mode 100755 app/Fine.php delete mode 100755 app/Http/Controllers/Auth/AuthController.php create mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php create mode 100644 app/Http/Controllers/Auth/LoginController.php delete mode 100755 app/Http/Controllers/Auth/PasswordController.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/BorrowController.php delete mode 100755 app/Http/Controllers/CategoryController.php create mode 100644 app/Http/Controllers/CollectionController.php delete mode 100755 app/Http/Controllers/FinesController.php create mode 100644 app/Http/Controllers/HomeController.php create mode 100644 app/Http/Controllers/Oai/RequestController.php delete mode 100755 app/Http/Controllers/PeminjamanController.php create mode 100644 app/Http/Controllers/Publish/IndexController.php create mode 100644 app/Http/Controllers/SearchController.php create mode 100644 app/Http/Controllers/Settings/CategoryController.php create mode 100644 app/Http/Controllers/Settings/DatasetController.php create mode 100644 app/Http/Controllers/Settings/LicenseController.php create mode 100644 app/Http/Controllers/Settings/PersonController.php create mode 100644 app/Http/Controllers/Settings/RoleController.php create mode 100644 app/Http/Controllers/Settings/UserController.php create mode 100644 app/Http/Controllers/SitelinkController.php create mode 100644 app/Http/Controllers/StaticPageController.php delete mode 100755 app/Http/Controllers/StudentController.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/PermissionMiddleware.php create mode 100644 app/Http/Middleware/TrimStrings.php delete mode 100755 app/Http/Requests/CategoryRequest.php create mode 100644 app/Http/Requests/DocumentRequest.php delete mode 100755 app/Http/Requests/FinesRequest.php create mode 100644 app/Http/Requests/LicenseRequest.php create mode 100644 app/Http/Requests/PersonRequest.php create mode 100644 app/Http/Requests/ProjectRequest.php delete mode 100755 app/Http/Requests/StudentRequest.php create mode 100644 app/Language.php create mode 100644 app/Library/Search/Navigation.php create mode 100644 app/Library/Search/SearchResult.php create mode 100644 app/Library/Search/SolariumAdapter.php create mode 100644 app/Library/Util/QueryBuilder.php create mode 100644 app/Library/Util/SearchParameter.php create mode 100644 app/Library/Util/SearchResultMatch.php create mode 100644 app/Library/Util/Searchtypes.php create mode 100644 app/Library/Util/SolrSearchQuery.php create mode 100644 app/Library/Util/SolrSearchSearcher.php create mode 100644 app/Library/Xml/Conf.php create mode 100644 app/Library/Xml/DatasetExtension.php create mode 100644 app/Library/Xml/Field.php create mode 100644 app/Library/Xml/Strategy.php create mode 100644 app/Library/Xml/XmlModel.php create mode 100644 app/License.php delete mode 100755 app/Periode.php create mode 100644 app/Permission.php create mode 100644 app/Person.php create mode 100644 app/Project.php create mode 100644 app/Providers/BroadcastServiceProvider.php delete mode 100755 app/Providers/BusServiceProvider.php create mode 100644 app/Providers/SolariumServiceProvider.php delete mode 100755 app/Student.php create mode 100644 app/Title.php create mode 100644 app/XmlCache.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 config/enums.php create mode 100644 config/permission.php create mode 100644 config/solarium.php delete mode 100755 database/migrations/2015_06_09_041212_create_fines_table.php create mode 100644 database/migrations/2017_06_01_100607_create_transactions_table.php create mode 100644 database/migrations/2017_06_01_104359_create_books_table.php create mode 100644 database/migrations/2017_07_05_091036_create_collections_table.php create mode 100644 database/migrations/2017_07_05_124312_create_documents_table.php create mode 100644 database/migrations/2017_07_05_133454_create_link_documents_collections.php create mode 100644 database/migrations/2018_02_22_134500_create_persons_table.php create mode 100644 database/migrations/2018_06_25_135711_create_permission_tables.php create mode 100644 database/migrations/test/2018_02_19_120518_create_categories_table.php create mode 100644 database/migrations/test/2018_02_20_134555_create_books_table.php create mode 100644 database/migrations/test/2018_02_20_135411_create_documents_table.php create mode 100644 package-lock.json create mode 100644 public/css/app1.css create mode 100644 public/css/font-awesome.css create mode 100644 public/css/grids-responsive.css create mode 100644 public/css/page.css create mode 100644 public/css/pure.css create mode 100644 public/css/styles.css create mode 100644 public/fonts/FontAwesome.otf rename public/fonts/{ => bootstrap}/glyphicons-halflings-regular.eot (100%) mode change 100755 => 100644 rename public/fonts/{ => bootstrap}/glyphicons-halflings-regular.svg (100%) mode change 100755 => 100644 rename public/fonts/{ => bootstrap}/glyphicons-halflings-regular.ttf (100%) mode change 100755 => 100644 rename public/fonts/{ => bootstrap}/glyphicons-halflings-regular.woff (100%) mode change 100755 => 100644 rename public/fonts/{ => bootstrap}/glyphicons-halflings-regular.woff2 (100%) mode change 100755 => 100644 create mode 100644 public/fonts/fontawesome-webfont.eot create mode 100644 public/fonts/fontawesome-webfont.svg create mode 100644 public/fonts/fontawesome-webfont.ttf create mode 100644 public/fonts/fontawesome-webfont.woff create mode 100644 public/fonts/fontawesome-webfont.woff2 create mode 100644 public/img/feed_small.png create mode 100644 public/img/theme/icon-author.gif create mode 100644 public/img/theme/icon-on-off.png create mode 100644 public/img/theme/icon-title.gif create mode 100644 public/js/lib.js create mode 100644 public/mix-manifest.json create mode 100644 public/oai-pmh.xslt create mode 100644 public/storage/files/productImage-1533309344.png create mode 100644 public/web.config create mode 100644 public/xsl/oai2.xslt create mode 100644 resources/assets/js/bootstrap.js create mode 100644 resources/assets/js/lib.js create mode 100644 resources/assets/sass/app1.scss create mode 100644 resources/assets/sass/style.scss create mode 100644 resources/lang/en/doctypes.php create mode 100644 resources/lang/en/imprint.en.txt create mode 100644 resources/lang/en/resources.php delete mode 100755 resources/views/app.blade.php delete mode 100755 resources/views/auth/password.blade.php create mode 100644 resources/views/auth/passwords/email.blade.php create mode 100644 resources/views/auth/passwords/reset.blade.php delete mode 100755 resources/views/auth/reset.blade.php create mode 100644 resources/views/errors/401.blade.php create mode 100644 resources/views/home.blade.php create mode 100644 resources/views/layouts/app.blade.php create mode 100644 resources/views/layouts/old_app.blade.php delete mode 100755 resources/views/lms/books.blade.php delete mode 100755 resources/views/lms/index.blade.php delete mode 100755 resources/views/lms/peminjaman/laporan.blade.php delete mode 100755 resources/views/lms/peminjaman/peminjaman.blade.php delete mode 100755 resources/views/lms/settings/category/_form.blade.php delete mode 100755 resources/views/lms/settings/category/add.blade.php delete mode 100755 resources/views/lms/settings/category/category.blade.php delete mode 100755 resources/views/lms/settings/category/edit.blade.php delete mode 100755 resources/views/lms/settings/fine/_form.blade.php delete mode 100755 resources/views/lms/settings/fine/edit.blade.php delete mode 100755 resources/views/lms/settings/fine/fine.blade.php delete mode 100755 resources/views/lms/settings/student/_form.blade.php delete mode 100755 resources/views/lms/settings/student/add.blade.php delete mode 100755 resources/views/lms/settings/student/edit.blade.php delete mode 100755 resources/views/lms/settings/student/student.blade.php create mode 100644 resources/views/oai/oai.blade.php create mode 100644 resources/views/publish/create-step1.blade.php create mode 100644 resources/views/publish/create-step2.blade.php create mode 100644 resources/views/publish/create-step3.blade.php create mode 100644 resources/views/rdr/borrow/borrow.blade.php rename resources/views/{lms/peminjaman => rdr/borrow}/histori.blade.php (82%) mode change 100755 => 100644 create mode 100644 resources/views/rdr/borrow/report.blade.php create mode 100644 resources/views/rdr/document/documents.blade.php create mode 100644 resources/views/rdr/document/show.blade.php create mode 100644 resources/views/rdr/home/about.blade.php create mode 100644 resources/views/rdr/home/contact.blade.php create mode 100644 resources/views/rdr/home/imprint.blade.php create mode 100644 resources/views/rdr/home/index.blade.php create mode 100644 resources/views/rdr/home/news.blade.php rename resources/views/{lms => rdr}/settings/book/_form.blade.php (70%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/book/add.blade.php (72%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/book/book.blade.php (64%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/book/edit.blade.php (56%) mode change 100755 => 100644 create mode 100644 resources/views/rdr/settings/collection/collection.blade.php rename resources/views/{lms => rdr}/settings/periode/_form.blade.php (100%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/periode/edit.blade.php (76%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/periode/periode.blade.php (86%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/shelf/_form.blade.php (100%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/shelf/add.blade.php (73%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/shelf/edit.blade.php (76%) mode change 100755 => 100644 rename resources/views/{lms => rdr}/settings/shelf/shelf.blade.php (65%) mode change 100755 => 100644 create mode 100644 resources/views/rdr/setup/imprint/edit.blade.php create mode 100644 resources/views/rdr/sitelink/index.blade.php create mode 100644 resources/views/rdr/solrsearch/index.blade.php create mode 100644 resources/views/rdr/solrsearch/pagination.blade.php create mode 100644 resources/views/rdr/solrsearch/simpleSearchForm.blade.php create mode 100644 resources/views/settings/document/_form.blade.php create mode 100644 resources/views/settings/document/document.blade.php create mode 100644 resources/views/settings/document/edit.blade.php create mode 100644 resources/views/settings/document/show.blade.php create mode 100644 resources/views/settings/license/_form.blade.php create mode 100644 resources/views/settings/license/edit.blade.php create mode 100644 resources/views/settings/license/license.blade.php create mode 100644 resources/views/settings/person/_form.blade.php create mode 100644 resources/views/settings/person/add.blade.php create mode 100644 resources/views/settings/person/edit.blade.php create mode 100644 resources/views/settings/person/person.blade.php create mode 100644 resources/views/settings/project/_form.blade.php create mode 100644 resources/views/settings/project/add.blade.php create mode 100644 resources/views/settings/project/category.blade.php create mode 100644 resources/views/settings/project/edit.blade.php create mode 100644 resources/views/settings/role/create.blade.php create mode 100644 resources/views/settings/role/edit.blade.php create mode 100644 resources/views/settings/role/role.blade.php create mode 100644 resources/views/settings/user/create.blade.php create mode 100644 resources/views/settings/user/edit.blade.php create mode 100644 resources/views/settings/user/user.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 webpack.mix.js diff --git a/.env b/.env index 0c79634..68eed91 100644 --- a/.env +++ b/.env @@ -1,15 +1,16 @@ -APP_ENV=local +APP_ENV=debug APP_DEBUG=true -APP_KEY=OKMcQgJBQ0qfAfBP8AqR6acRwMUt67xj +APP_KEY=base64:mbyRHBYCM6Uh6ZRiTWvsd7jf2QK8jpmVCJwZuSA9KgA= -DB_CONNECTION=mysql -DB_HOST=localhost -DB_DATABASE=library -DB_USERNAME=root -DB_PASSWORD= +DB_CONNECTION=sqlsrv +DB_HOST=zontik\test +DB_PORT=3306 +DB_DATABASE=opusdb +DB_USERNAME=opus4admin +DB_PASSWORD=opus4admin007 CACHE_DRIVER=file -SESSION_DRIVER=file +SESSION_DRIVER=cookie QUEUE_DRIVER=sync MAIL_DRIVER=smtp @@ -18,16 +19,4 @@ MAIL_PORT=587 MAIL_FROM=test.laravel123@gmail.com MAIL_USERNAME=test.laravel123@gmail.com MAIL_PASSWORD=testinglaravel -MAIL_ENCRYPTION=tls - -GITHUB_CLIENT_ID=c9ec9dcffeea678b2bca -GITHUB_CLIENT_SECRET=dcb3e7d2ce96a746467be42d8afc4d9e68f034cf - -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= - -FACEBOOK_CLIENT_ID= -FACEBOOK_CLIENT_SECRET= - -TWITTER_CLIENT_ID= -TWITTER_CLIENT_SECRET= \ No newline at end of file +MAIL_ENCRYPTION=tls \ No newline at end of file diff --git a/.gitignore b/.gitignore index b5281fe..849a52c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,21 @@ +/node_modules +/Properties + +/.vs/lms/v15 +/lms.user +/lms.sln +/lms.phpproj.user +/lms.phpproj + +# Composer +/composer.lock +/composer.phar /vendor -/node_modules \ No newline at end of file + +# Linux +*~ +*.swp + +# Windows +Thumbs.db +desktop.ini \ No newline at end of file diff --git a/.vscode/.gitignore b/.vscode/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/.vscode/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/app/Book.php b/app/Book.php index 82d0177..d0faa19 100755 --- a/app/Book.php +++ b/app/Book.php @@ -1,51 +1,50 @@ -belongsTo('App\Category'); - - } + public function project() + { + return $this->belongsTo('App\Project', 'project_id', 'id'); + } - public function shelf() - { - - return $this->belongsTo('App\Shelf'); - - } + // public function shelf() + // { + // return $this->belongsTo('App\Shelf'); + // } - public function transactions() - { + public function transactions() + { + //model, foreign key on the Transaction model is book_id, local id + return $this->hasMany('App\Transaction', 'book_id', 'id'); + } - return $this->hasMany('App\Transaction'); - } - public function scopeAvailable($query) - { - - return $query->where('stock', '>', 0); + public function scopeAvailable($query) + { + return $query->where('stock', '>', 0); + } - } - - public function scopeOrderByTitle($query) - { - - return $query->orderBy('title'); - - } + public function scopeOrderByTitle($query) + { + return $query->orderBy('title'); + } + public function hasProject() + { + return $this->project()->exists(); + } } diff --git a/app/Category.php b/app/Category.php deleted file mode 100755 index 4d668e7..0000000 --- a/app/Category.php +++ /dev/null @@ -1,17 +0,0 @@ -hasMany('App\Book'); - } - -} diff --git a/app/Collection.php b/app/Collection.php new file mode 100644 index 0000000..f2c55f1 --- /dev/null +++ b/app/Collection.php @@ -0,0 +1,14 @@ +belongsToMany(\App\Dataset::class, 'link_documents_collections', 'collection_id', 'document_id'); + } +} diff --git a/app/Dataset.php b/app/Dataset.php new file mode 100644 index 0000000..26d5d7c --- /dev/null +++ b/app/Dataset.php @@ -0,0 +1,184 @@ +_init(); + } + + public function project() + { + return $this->belongsTo(\App\Project::class, 'project_id', 'id'); + } + + public function collections() + { + return $this + ->belongsToMany(\App\Collection::class, 'link_documents_collections', 'document_id', 'collection_id'); + } + + #region [person table] + + //return all persons attached to this film + public function persons() + { + return $this->belongsToMany(\App\Person::class, 'link_documents_persons', 'document_id', 'person_id') + ->withPivot('role'); + } + + /** + * Return all authors for this dataset + * + * @return \App\Person + */ + public function authors() + { + return $this + ->belongsToMany(\App\Person::class, 'link_documents_persons', 'document_id', 'person_id') + ->wherePivot('role', 'author'); + } + + /** + * Add author to dataset + * + * @param \App\User $user user to add + * + * @return void + */ + public function addAuthor(\App\User $user) : void + { + $this->persons()->save($user, ['role' => 'author']); + } + + /** + * Return all contributors for this dataset + * + * @return \App\Person + */ + public function contributors() + { + return $this + ->belongsToMany(\App\Person::class, 'link_documents_persons', 'document_id', 'person_id') + ->wherePivot('role', 'contributor'); + } + + #endregion + + #region title table: + + public function titles() + { + return $this->hasMany(\App\Title::class, 'document_id', 'id') + ->where('type', 'main'); + } + // public function addTitle(\App\Title $title) + // { + // $this->persons()->save($title, ['type' => 'main']); + // } + + /** + * Relation abstracts + * + * @return \App\Title + */ + public function abstracts() + { + return $this->hasMany(\App\Title::class, 'document_id', 'id') + ->where('type', 'abstract'); + } + // public function addAbstract (\App\Title $title) + // { + // $this->persons()->save($title, ['type' => 'abstract']); + // } + + #endregion + + public function licenses() + { + return $this->belongsToMany(\App\License::class, 'link_documents_licences', 'document_id', 'licence_id'); + } + + public function files() + { + return $this->hasMany(\App\File::class, 'document_id', 'id'); + } + + /** + * Get the xml-cache record associated with the dataset. + * + * @return \App\XmlCache + */ + public function xmlCache() + { + return $this->hasOne(\App\XmlCache::class, 'document_id', 'id'); + } + + + + public function scopeOrderByType($query) + { + return $query->orderBy('type'); + } + + /** + * Get earliest publication date. + * + * @param \Illuminate\Database\Eloquent\Builder $query sql-query + * @param string $column column + * + * @return \Carbon\Carbon\Date + */ + public function scopeEarliestPublicationDate($query, string $column = null) + { + if (!$column) { + $column = self::PUBLISHED_AT; + } + return $query->whereNotNull('server_date_published') + ->where('server_state', 'published') + ->orderBy('server_date_published', 'asc') + ->first() + ->server_date_published; + } + + public function hasProject() + { + return $this->project()->exists(); + } +} diff --git a/app/DatasetFinder.php b/app/DatasetFinder.php new file mode 100644 index 0000000..9d67c57 --- /dev/null +++ b/app/DatasetFinder.php @@ -0,0 +1,112 @@ +_db = $table->getAdapter(); + // $this->_select = $this->_db->select()->from(array('d' => 'documents')); + + $this->_select = Dataset::query(); //>select('name', 'email as user_email') + } + + /** + * Add constraints to be applied on the result set. + * + * @param string $serverStateArray + * @return DatasetFinder Fluent interface. + */ + public function setServerStateInList($serverStateArray) + { + $this->_select->whereIn('server_state', $serverStateArray); + //$this->_select->where('server_state IN (?)', $serverStateArray); + return $this; + } + + /** + * Add constraints to be applied on the result set. + * + * @param string $type + * @return DatasetFinder Fluent interface. + */ + public function setType($type) + { + $this->_select->where('type', $type); + return $this; + } + + /** + * Add constraints to be applied on the result set. + * + * @param string $type + * @return DatasetFinder Fluent interface. + */ + public function setServerState($serverState) + { + //$this->_select->where('server_state', '=', $serverState); + $this->_select->where('server_state', 'LIKE', "%".$serverState."%"); + return $this; + } + + /** + * Returns a list of distinct document types for the given constraint set. + * + * @return array + */ + public function groupedTypesPlusCount() + { + //$this->_select->reset('columns'); + $test = $this->_select + //->select("type") // "count(DISTINCT id)"); + ->selectRaw('type, count(DISTINCT id) as count') + ->groupBy('type') + ->pluck('count', 'type') + ->toArray(); + return $test; + } + + /** + * Returns the number of (distinct) documents for the given constraint set. + * + * @return int + */ + public function count() + { + $this->_select->count(); + } + + /** + * Returns a list of (distinct) document ids for the given constraint set. + * + * NOTE: It was not possible to make sure only DISTINCT identifiers are returned. Therefore array_unique is used. + * See OPUSVIER-3644 for more information. + * + * @return array + */ + public function ids() + { + //return array_unique($this->_db->fetchCol($this->getSelectIds())); + return $this->_select->pluck('id')->toArray(); + } +} diff --git a/app/File.php b/app/File.php new file mode 100644 index 0000000..30d6450 --- /dev/null +++ b/app/File.php @@ -0,0 +1,19 @@ +belongsTo(\App\Dataset::class, 'document_id', 'id'); + } +} diff --git a/app/Fine.php b/app/Fine.php deleted file mode 100755 index c7871c1..0000000 --- a/app/Fine.php +++ /dev/null @@ -1,12 +0,0 @@ -auth = $auth; - $this->registrar = $registrar; - - $this->middleware('guest', ['except' => 'getLogout']); - } - -} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..6a247fe --- /dev/null +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,32 @@ +middleware('guest'); + } +} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php new file mode 100644 index 0000000..b4be9a1 --- /dev/null +++ b/app/Http/Controllers/Auth/LoginController.php @@ -0,0 +1,51 @@ +middleware('guest', ['except' => 'logout']); + } + + public function logout(Request $request) + { + $this->guard()->logout(); + + $request->session()->flush(); + + $request->session()->regenerate(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/PasswordController.php deleted file mode 100755 index 3106193..0000000 --- a/app/Http/Controllers/Auth/PasswordController.php +++ /dev/null @@ -1,38 +0,0 @@ -auth = $auth; - $this->passwords = $passwords; - - $this->middleware('guest'); - } - -} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..7a69be0 --- /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|max:255', + 'email' => 'required|email|max:255|unique:users', + 'password' => 'required|min:6|confirmed', + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return 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..2c863aa --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,39 @@ +middleware('guest'); + } +} diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index d6c44e6..f6139a3 100755 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -1,96 +1,82 @@ -middleware('auth'); + } - public function __construct() - { + public function index() : View + { + //$books = Book::with('category', 'shelf')->get(); + $books = Book::with('project')->get(); + return view('rdr.settings.book.book', compact('books')); + } - $this->middleware('auth'); + public function add() + { + $categories = Project::pluck('name', 'id'); + $shelves = Shelf::pluck('shelf', 'id'); + + $datum = date('Y-m-d'); + $nowYear = substr($datum, 0, 4); + $years = array(); + for ($jahr = 1990; $jahr <= $nowYear; $jahr++) { + $years[$jahr] = $jahr; + } + + return view('rdr.settings.book.add', compact('categories', 'shelves', 'years')); + } - } + public function store(BookRequest $request) + { + $input = $request->all(); + $book = Book::create($input); + session()->flash('flash_message', 'You have been addded 1 book!'); + return redirect()->route('settings.book'); + } - public function index() - { - - $books = Book::with('category', 'shelf')->get(); + public function edit($id) + { + $book = Book::findOrFail($id); + $categories = Project::pluck('name', 'id'); + // $shelves = Shelf::pluck('shelf', 'id'); + + $datum = date('Y-m-d'); + $nowYear = substr($datum, 0, 4); + $years = array(); + for ($jahr = 1990; $jahr <= $nowYear; $jahr++) { + $years[$jahr] = $jahr; + } + return view('rdr.settings.book.edit', compact('book', 'categories', 'years')); + //return view('rdr.settings.book.edit', compact('book', 'categories', 'shelves', 'years')); + } - return view('lms.settings.book.book', compact('books')); - - } - - public function add() - { - $categories = Category::lists('category', 'id'); - $shelves = Shelf::lists('shelf', 'id'); - - $tanggal = date('Y-m-d'); - $ambilTahun = substr($tanggal, 0, 4); - for($tahun = 1990; $tahun <= $ambilTahun; $tahun++){ - $years[] = $tahun; - } - - return view('lms.settings.book.add', compact('categories', 'shelves', 'years')); - } - - public function store(BookRequest $request) - { - - $input = $request->all(); - - $book = Book::create($input); - - session()->flash('flash_message', 'You have been addded 1 book!'); - - return redirect()->route('settings.book'); - - } - - public function edit($id) - { - - $book = Book::findOrFail($id); - $categories = Category::lists('category', 'id'); - $shelves = Shelf::lists('shelf', 'id'); - - return view('lms.settings.book.edit', compact('book', 'categories', 'shelves')); - - - } - - public function update($id, BookRequest $request) - { - - $book = Book::findOrFail($id); - - $input = $request->all(); - - $book->update($input); - - session()->flash('flash_message', 'You have been updated 1 book!'); - - return redirect()->route('settings.book'); - - } - - public function delete($id) - { - - $book = Book::findOrFail($id); - - $book->delete(); - - session()->flash('flash_message', 'You have been deleted 1 book!'); - - return redirect()->route('settings.book'); - - } + public function update($id, BookRequest $request) + { + $book = Book::findOrFail($id); + $input = $request->all(); + $book->update($input); + session()->flash('flash_message', 'You have updated 1 book!'); + return redirect()->route('settings.book'); + } + public function delete($id) + { + $book = Book::findOrFail($id); + $book->delete(); + session()->flash('flash_message', 'You have deleted 1 book!'); + return redirect()->route('settings.book'); + } } diff --git a/app/Http/Controllers/BorrowController.php b/app/Http/Controllers/BorrowController.php new file mode 100644 index 0000000..e0d3ed7 --- /dev/null +++ b/app/Http/Controllers/BorrowController.php @@ -0,0 +1,107 @@ +middleware('auth'); + } + + public function index() + { + //$books = Book::available()->orderByTitle()->lists('title', 'id'); + $persons = Person::active()->orderByName()->pluck('last_name', 'id'); + //$categories = Category::lists('category', 'id'); + $categories = Project::get(); + + return view('rdr.borrow.borrow', compact('persons', 'categories')); + } + + public function store(PeminjamanRequest $request) + { + $input = $request->all(); + $book_id = $input['book_id']; + $person_id = $input['person_id']; + $input['borrowed_at'] = time(); + $transaction = Transaction::create($input); + $book = Book::findOrFail($book_id); + $stock = $book['stock'] - 1; + $book->update(['stock' => $stock]); + $person = Person::findOrFail($person_id); + $borrow = $person['borrow'] + 1; + $person->update(['borrow' => $borrow]); + session()->flash('flash_message', 'You have added 1 transaction!'); + + return redirect()->route('borrow.report'); + } + + public function report() + { + $dateNow = time(); + $transactions = Transaction::with('student', 'book')->notReturnedYet()->get(); + + foreach ($transactions as $transaction) { + $dateDiff = $dateNow - $transaction['borrowed_at']; + $durasi = floor($dateDiff/(60 * 60 * 24)); + // $fines = Fine::first(); + // if($durasi > $fines['days']) + // { + // $hariDenda = $durasi - $fines['days']; + // $denda = $hariDenda * $fines['fines']; + // $transaction->update(['fines' => $denda]); + // } + // else + // { + // $denda = 0; + // $transaction->update(['fines' => $denda]); + // } + } + //ambil tanggal + //$date2 = mktime(0,0,0,05,31,2015); + //return $date2; + return view('rdr.borrow.report', compact('transactions', 'durasi')); + } + + public function pengembalian($id) + { + $returnedAt = time(); + $transaction = Transaction::findOrFail($id); + $transaction->update(['status' => 1, 'returned_at' => $returnedAt]); + + $book = Book::findOrFail($transaction['book_id']); + $stock = $book['stock'] + 1; + $book->update(['stock' => $stock]); + $student = Student::findOrFail($transaction['student_id']); + $borrow = $student['borrow'] - 1; + $student->update(['borrow' => $borrow]); + + session()->flash('flash_message', 'You have returned 1 book!'); + return redirect()->route('borrow.histori'); + } + + public function perpanjang($id) + { + $transaction = Transaction::findOrFail($id); + $dateNow = time(); + $transaction->update(['borrowed_at' => $dateNow, 'fines' => 0]); + session()->flash('flash_message', 'You have added 1 perpanjang!'); + return redirect()->route('borrow.report'); + } + + public function histori() + { + $transactions = Transaction::returned()->get(); + return view('rdr.borrow.histori', compact('transactions')); + } +} diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php deleted file mode 100755 index 5b77eb9..0000000 --- a/app/Http/Controllers/CategoryController.php +++ /dev/null @@ -1,85 +0,0 @@ -middleware('auth'); - - } - - public function index() - { - - $categories = Category::get(); - - return view('lms.settings.category.category', compact('categories')); - - } - - public function add() - { - - return view('lms.settings.category.add'); - - } - - public function store(CategoryRequest $request) - { - - $input = $request->all(); - - $category = Category::create($input); - - session()->flash('flash_message', 'You have been addded 1 category!'); - - return redirect()->route('settings.category'); - - } - - public function edit($id) - { - - $category = Category::findOrFail($id); - - return view('lms.settings.category.edit', compact('category')); - - } - - - public function update($id, CategoryRequest $request) - { - - $category = Category::findOrFail($id); - - $input = $request->all(); - - session()->flash('flash_message', 'You have been updated 1 category!'); - - $category->update($input); - - return redirect()->route('settings.category'); - - } - - public function delete($id) - { - - $category = Category::findOrFail($id); - - $category->delete(); - - session()->flash('flash_message', 'You have been deleted 1 category!'); - - return redirect()->route('settings.category'); - - } - -} diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php new file mode 100644 index 0000000..56d2b5f --- /dev/null +++ b/app/Http/Controllers/CollectionController.php @@ -0,0 +1,96 @@ +get(); + //$collections = Collection::get(); + $collections = Collection::with('documents') + ->paginate(8); //get(); + return view('rdr.settings.collection.collection', compact('collections')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function delete($id) + { + // + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 27b3f45..2f7a1d3 100755 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -1,11 +1,13 @@ -middleware('auth'); - - } - - public function index() - { - - $fines = Fine::get(); - - return view('lms.settings.fine.fine', compact('fines')); - - } - - public function edit($id) - { - - $fine = Fine::findOrFail($id); - - return view('lms.settings.fine.edit', compact('fine')); - - } - - public function update($id, FinesRequest $request) - { - $fines = Fine::findOrFail($id); - - $input = $request->all(); - - $fines->update($input); - - session()->flash('flash_message', 'You have been updated fines!'); - - return redirect()->route('settings.fines'); - - } - -} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..9361a8f --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,85 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function index(): View + { + // $tglSekarang = time(); + + // $students = Student::get(); + + // foreach ($students as $student) { + + // $dateDiff = $tglSekarang - $student['registered_at']; + // $durasi = floor($dateDiff/(60 * 60 * 24)); + // $periode = Periode::first(); + // if($durasi > $periode['days']){ + // $student->update(['status' => 0]); + // } + // else{ + // $student->update(['status' => 1]); + // } + + // } + return view('rdr.home.index'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function contact(): View + { + return view('rdr.home.contact'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function imprint(): View + { + return view('rdr.home.imprint'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function about(): View + { + return view('rdr.home.about'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Http\Response + */ + public function news(): View + { + return view('rdr.home.news'); + } +} diff --git a/app/Http/Controllers/Oai/RequestController.php b/app/Http/Controllers/Oai/RequestController.php new file mode 100644 index 0000000..5cbc818 --- /dev/null +++ b/app/Http/Controllers/Oai/RequestController.php @@ -0,0 +1,417 @@ +_xslt = new \DomDocument; + $this->_xslt->load($stylesheet); + $this->_proc->importStyleSheet($this->_xslt); + if (isset($_SERVER['HTTP_HOST'])) { + $this->_proc->setParameter('', 'host', $_SERVER['HTTP_HOST']); + } + //$this->_proc->setParameter('', 'server', $this->getRequest()->getBaseUrl()); + } + + public function __construct() + { + //$this->middleware('auth'); + // Initialize member variables. + $this->_xml = new \DomDocument; + $this->_proc = new \XSLTProcessor; + } + + public function index(Request $request) + { + $oaiRequest = $request->all(); + $safeRemoveParameters = array('module', 'controller', 'action', 'role'); + foreach ($safeRemoveParameters as $parameter) { + unset($oaiRequest[$parameter]); + } + return $this->__handleRequest($oaiRequest); + } + + + + private function __handleRequest(array $oaiRequest) + { + // Setup stylesheet + $this->loadStyleSheet('oai-pmh.xslt'); + + // Set response time + $this->_proc->setParameter('', 'responseDate', date("Y-m-d\TH:i:s\Z")); + + // set OAI base url + $uri = explode('?', $_SERVER['REQUEST_URI'], 2); + $this->_proc->setParameter('', 'baseURL', url('/') . $uri[0]); + + if (isset($oaiRequest['verb'])) { + $this->_proc->setParameter('', 'oai_verb', $oaiRequest['verb']); + if ($oaiRequest['verb'] == 'Identify') { + $this->_handleIdentify(); + } elseif ($oaiRequest['verb'] == 'ListMetadataFormats') { + $this->_handleListMetadataFormats(); + } elseif ($oaiRequest['verb'] == 'ListRecords') { + $this->_handleListRecords($oaiRequest); + } elseif ($oaiRequest['verb'] == 'ListIdentifiers') { + $this->_handleListIdentifiers($oaiRequest); + } elseif ($oaiRequest['verb'] == 'ListSets') { + $this->_handleListSets($oaiRequest); + } else { + $this->_handleIllegalVerb(); + } + } else { + $oaiRequest['verb'] = 'Identify'; + $this->_proc->setParameter('', 'oai_verb', $oaiRequest['verb']); + $this->doc = $this->_handleIdentify(); + } + + //$xml = $this->_xml->saveXML(); + $xml = $this->_proc->transformToXML($this->_xml); + + //$xml = $this->doc->asXML(); + return response($xml)//->view('rss', array('rss'=>$this->rss)) + ->header('Content-Type', 'application/xml') + ->header('charset', 'utf-8'); + } + + /** + * Implements response for OAI-PMH verb 'Identify'. + * + * @return void + */ + private function _handleIdentify() + { + $email = "repository@geologie.ac.at"; + $repositoryName = "Data Research Repository"; + $repIdentifier = "rdr.gba.ac.at"; + //$sampleIdentifier = $this->_configuration->getSampleIdentifier(); + $earliestDateFromDb = Dataset::earliestPublicationDate(); + + // set parameters for oai-pmh.xslt + $this->_proc->setParameter('', 'email', $email); + $this->_proc->setParameter('', 'repositoryName', $repositoryName); + $this->_proc->setParameter('', 'repIdentifier', $repIdentifier); + //$this->_proc->setParameter('', 'sampleIdentifier', $sampleIdentifier); + $this->_proc->setParameter('', 'earliestDatestamp', $earliestDateFromDb); + $this->_xml->appendChild($this->_xml->createElement('Documents')); + } + + + + + /** + * Implements response for OAI-PMH verb 'ListMetadataFormats'. + * + * @param array &$oaiRequest Contains full request information + * @return void + */ + private function _handleListMetadataFormats() + { + $this->_xml->appendChild($this->_xml->createElement('Documents')); + } + + /** + * Implements response for OAI-PMH verb 'ListRecords'. + * + * @param array &$oaiRequest Contains full request information + * @return void + */ + private function _handleListRecords($oaiRequest) + { + $maxRecords = 20;//$this->_configuration->getMaxListRecords(); + $this->_handlingOfLists($oaiRequest, $maxRecords); + } + + /** + * Implements response for OAI-PMH verb 'ListIdentifiers'. + * + * @param array &$oaiRequest Contains full request information + * @return void + */ + private function _handleListIdentifiers(array &$oaiRequest) + { + $maxIdentifier = 20;//$this->_configuration->getMaxListIdentifiers(); + $this->_handlingOfLists($oaiRequest, $maxIdentifier); + } + + /** + * Implements response for OAI-PMH verb 'ListSets'. + * + * @param array &$oaiRequest Contains full request information + * @return void + */ + private function _handleListSets() + { + $repIdentifier = "rdr.gba.ac.at"; + $this->_proc->setParameter('', 'repIdentifier', $repIdentifier); + $this->_xml->appendChild($this->_xml->createElement('Documents')); + + //$oaiSets = new Oai_Model_Sets(); + $sets = array( + 'bibliography:true' => 'Set for bibliographic entries', + 'bibliography:false' => 'Set for non-bibliographic entries', + ); + $sets = array_merge( + $sets, + $this->getSetsForDocumentTypes() + ); + //$sets = $this->getSetsForDocumentTypes(); + + foreach ($sets as $type => $name) { + $opusDoc = $this->_xml->createElement('Rdr_Sets'); + $typeAttr = $this->_xml->createAttribute('Type'); + $typeValue = $this->_xml->createTextNode($type); + $typeAttr->appendChild($typeValue); + $opusDoc->appendChild($typeAttr); + $nameAttr = $this->_xml->createAttribute('TypeName'); + $nameValue = $this->_xml->createTextNode($name); + $nameAttr->appendChild($nameValue); + $opusDoc->appendChild($nameAttr); + $this->_xml->documentElement->appendChild($opusDoc); + } + } + + + private function _handleIllegalVerb() + { + $this->_proc->setParameter('', 'oai_error_code', 'badVerb'); + $this->_proc->setParameter('', 'oai_error_message', 'The verb provided in the request is illegal.'); + } + + + /** + * Helper method for handling lists. + * + * @param array $oaiRequest query parameter + * @param mixed $maxRecords max count of records + * + * @return void + */ + private function _handlingOfLists(array &$oaiRequest, $maxRecords) + { + if (true === empty($maxRecords)) { + $maxRecords = 100; + } + $repIdentifier = "rdr.gba.ac.at"; + $this->_proc->setParameter('', 'repIdentifier', $repIdentifier); + $this->_xml->appendChild($this->_xml->createElement('Documents')); + + // do some initialisation + $cursor = 0; + //$totalIds = 0; + $start = $maxRecords + 1; + $reldocIds = array(); + + $metadataPrefix = null; + if (true === array_key_exists('metadataPrefix', $oaiRequest)) { + $metadataPrefix = $oaiRequest['metadataPrefix']; + } + $this->_proc->setParameter('', 'oai_metadataPrefix', $metadataPrefix); + + // no resumptionToken is given + $finder = Dataset::query(); + // add server state restrictions + $finder->whereIn('server_state', $this->_deliveringDocumentStates); + if (array_key_exists('set', $oaiRequest)) { + $setarray = explode(':', $oaiRequest['set']); + if ($setarray[0] == 'doc-type') { + if (count($setarray) === 2 and !empty($setarray[1])) { + $finder->where('type', $setarray[1]); + } + } + } + + $totalIds = $finder->count(); + $reldocIds = $finder->pluck('id')->toArray(); + + // handling of document ids + $restIds = $reldocIds; + $workIds = array_splice($restIds, 0, $maxRecords); + //foreach ($datasets as $dataset) + foreach ($workIds as $dataId) { + $dataset = Dataset::findOrFail($dataId); + $this->createXmlRecord($dataset); + } + } + + private function createXmlRecord(Dataset $dataset) + { + //$node = $this->_xml->createElement('Rdr_Dataset'); + $domNode = $this->getDatasetXmlDomNode($dataset); + // add frontdoor url + $this->_addLandingPageAttribute($domNode, $dataset->id); + + // add access rights to element + //$this->_addAccessRights($domNode, $dataset); + + $node = $this->_xml->importNode($domNode, true); + + //$node->setAttribute("Id", $dataset->id); + //$node->setAttribute("ServerState", $dataset->server_state); + + ////$child = new \DOMElement("ServerDateModified"); + //$child = $this->_xml->createElement('ServerDateModified'); + //$child->setAttribute("Year", $dataset->server_date_modified->format('Y')); + //$child->setAttribute("Month", $dataset->server_date_modified->month); + //$child->setAttribute("Day", $dataset->server_date_modified->day); + //$node->appendChild($child); + + //$type = $dataset->type; + $this->_addSpecInformation($node, 'doc-type:' . $dataset->type); + //$this->_addSpecInformation($node, 'bibliography:' . 'false'); + + $this->_xml->documentElement->appendChild($node); + } + + /** + * Add the landingpage attribute to Rdr_Dataset XML output. + * + * @param \DOMNode $document Rdr_Dataset XML serialisation + * @param string $docid Id of the dataset + * @return void + */ + private function _addLandingPageAttribute(\DOMNode $document, $dataid) + { + $url = route('document.show', $dataid); + + $owner = $document->ownerDocument; + $attr = $owner->createAttribute('landingpage'); + $attr->appendChild($owner->createTextNode($url)); + $document->appendChild($attr); + } + + private function _addSpecInformation(\DOMNode $document, $information) + { + $setSpecAttribute = $this->_xml->createAttribute('Value'); + $setSpecAttributeValue = $this->_xml->createTextNode($information); + $setSpecAttribute->appendChild($setSpecAttributeValue); + + $setSpecElement = $this->_xml->createElement('SetSpec'); + //$setSpecElement =new \DOMElement("SetSpec"); + $setSpecElement->appendChild($setSpecAttribute); + $document->appendChild($setSpecElement); + } + + private function getDatasetXmlDomNode($dataset) + { + if (!in_array($dataset->server_state, $this->_deliveringDocumentStates)) { + $message = 'Trying to get a document in server state "' . $dataset->server_state . '"'; + //Zend_Registry::get('Zend_Log')->err($message); + Log::error("server state: $message"); + throw new \Exception($message); + } + + $dataset->fetchValues(); + $xmlModel = new \App\Library\Xml\XmlModel(); + $xmlModel->setModel($dataset); + $xmlModel->excludeEmptyFields(); + $xmlModel->setXmlCache(new \App\XmlCache()); + return $xmlModel->getDomDocument()->getElementsByTagName('Rdr_Dataset')->item(0); + } + + /** + * Returns oai sets for document types. + * @return array + */ + private function getSetsForDocumentTypes() + { + $setSpecPattern = self::SET_SPEC_PATTERN; + $sets = array(); + + $finder = new \App\DatasetFinder(); + $finder->setServerState('published'); + foreach ($finder->groupedTypesPlusCount() as $doctype => $row) { + if (0 == preg_match("/^$setSpecPattern$/", $doctype)) { + $msg = "Invalid SetSpec (doctype='" . $doctype . "')." + . " Allowed characters are [$setSpecPattern]."; + Log::error("OAI-PMH: $msg"); + continue; + } + + $setSpec = 'doc-type:' . $doctype; + // $count = $row['count']; + $sets[$setSpec] = "Set for document type '$doctype'"; + } + + return $sets; + } + + private function handleIdentifyOld() + { + //$earliestDateFromDb = Opus_Document::getEarliestPublicationDate(); + //$earliestDateFromDb = Dataset::select('server_date_created')->orderBy('server_date_created', 'desc')->first()->toDateTimeString(); + $earliestDateFromDb = Dataset::earliestPublicationDate(); + + $sxe = new \SimpleXMLElement(''); + $sxe->addAttribute('xmlns', 'http://www.openarchives.org/OAI/2.0/'); + $sxe->addAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); + $sxe->addAttribute('xmlns:mml', 'http://www.w3.org/1998/Math/MathML'); + $sxe->addAttribute('xsi:schemaLocation', 'http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd'); + $sxe->addChild('responseDate', date("Y-m-d\TH:i:s\Z")); + + $uri = explode('?', $_SERVER['REQUEST_URI'], 2); + $requestChild = $sxe->addChild('request', url('/') . $uri[0]); + $requestChild->addAttribute('verb', 'Identify'); + + $identify = $sxe->addChild('Identify'); + $identify->addChild('repositoryName', "Data Research Repository"); + $identify->addChild('baseURL', "http://rdr.gba.geolba.ac.at/"); + $identify->addChild('protocolVersion', '2.0'); + $identify->addChild('adminEmail', 'repository@geologie.ac.at'); + //$identify->addChild('earliestDatestamp', '2017-04-07'); + $identify->addChild('earliestDatestamp', $earliestDateFromDb); + $identify->addChild('deletedRecord', 'persistent'); + + //$description = $identify->addChild('description'); + //$oaiIdentifier = $description->addChild('oai-identifier'); + //$oaiIdentifier->addAttribute('xmlns', 'http://www.openarchives.org/OAI/2.0/oai-identifier'); + //$oaiIdentifier->addAttribute('xsi:schemaLocation', 'http://www.openarchives.org/OAI/2.0/oai-identifier'); + //$oaiIdentifier->addChild('scheme', 'oai'); + + return $sxe; + } +} diff --git a/app/Http/Controllers/PagesController.php b/app/Http/Controllers/PagesController.php index 87c053c..88c9d5a 100755 --- a/app/Http/Controllers/PagesController.php +++ b/app/Http/Controllers/PagesController.php @@ -1,57 +1,42 @@ -middleware('auth'); + } - public function __construct() - { - - $this->middleware('auth'); - - - } - - public function index() - { - $tglSekarang = time(); - - $students = Student::get(); - - foreach ($students as $student) { - - $dateDiff = $tglSekarang - $student['registered_at']; - $durasi = floor($dateDiff/(60 * 60 * 24)); - $periode = Periode::first(); - if($durasi > $periode['days']){ - $student->update(['status' => 0]); - } - else{ - $student->update(['status' => 1]); - } - - } - - return view('lms.index'); - - } - - public function books() - { - - $books = Book::with('category', 'shelf')->orderByTitle()->get(); - - return view('lms.books', compact('books')); - - } + public function documents() : View + { + // $books = Book::with('category', 'shelf')->orderByTitle()->get(); + $documents = Dataset::orderByType()->get(); + return view('rdr.document.documents', compact('documents')); + } + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id): View + { + $document = Dataset::findOrFail($id); + $document->load('titles'); + $document->load('abstracts'); + return view('rdr.document.show', compact('document')); + } } diff --git a/app/Http/Controllers/PeminjamanController.php b/app/Http/Controllers/PeminjamanController.php deleted file mode 100755 index c902220..0000000 --- a/app/Http/Controllers/PeminjamanController.php +++ /dev/null @@ -1,148 +0,0 @@ -middleware('auth'); - - } - - public function index() - { - - //$books = Book::available()->orderByTitle()->lists('title', 'id'); - $students = Student::notLimit()->active()->orderByName()->lists('name', 'id'); - //$categories = Category::lists('category', 'id'); - $categories = Category::get(); - - - return view('lms.peminjaman.peminjaman', compact('students', 'categories')); - - } - - public function store(PeminjamanRequest $request) - { - - $input = $request->all(); - - $book_id = $input['book_id']; - - $student_id = $input['student_id']; - - $input['borrowed_at'] = time(); - - $transaction = Transaction::create($input); - - $book = Book::findOrFail($book_id); - - $stock = $book['stock'] - 1; - - $book->update(['stock' => $stock]); - - $student = Student::findOrFail($student_id); - - $borrow = $student['borrow'] + 1; - - $student->update(['borrow' => $borrow]); - - session()->flash('flash_message', 'You have been added 1 transaction!'); - - return redirect()->route('peminjaman.laporan'); - - } - - public function laporan() - { - $tglSekarang = time(); - - $transactions = Transaction::with('student', 'book')->notReturnedYet()->get(); - - foreach ($transactions as $transaction) { - - $dateDiff = $tglSekarang - $transaction['borrowed_at']; - $durasi = floor($dateDiff/(60 * 60 * 24)); - $fines = Fine::first(); - if($durasi > $fines['days']){ - $hariDenda = $durasi - $fines['days']; - $denda = $hariDenda * $fines['fines']; - $transaction->update(['fines' => $denda]); - } - else{ - $denda = 0; - $transaction->update(['fines' => $denda]); - } - - } - - //ambil tanggal - //$date2 = mktime(0,0,0,05,31,2015); - //return $date2; - return view('lms.peminjaman.laporan', compact('transactions', 'durasi')); - } - - public function pengembalian($id) - { - $returnedAt = time(); - - $transaction = Transaction::findOrFail($id); - - $transaction->update(['status' => 1, 'returned_at' => $returnedAt]); - - //ini bisa langsung, cuman kan harus ambil data stock nya dulu mzzz - //$transaction->book()->update(['stock' => 7]); - - $book = Book::findOrFail($transaction['book_id']); - - $stock = $book['stock'] + 1; - - $book->update(['stock' => $stock]); - - $student = Student::findOrFail($transaction['student_id']); - - $borrow = $student['borrow'] - 1; - - $student->update(['borrow' => $borrow]); - - session()->flash('flash_message', 'You have been doing 1 returned transaction!'); - - return redirect()->route('peminjaman.histori'); - - } - - public function perpanjang($id) - { - - $transaction = Transaction::findOrFail($id); - - $dateNow = time(); - - $transaction->update(['borrowed_at' => $dateNow, 'fines' => 0]); - - session()->flash('flash_message', 'You have been added 1 perpanjang!'); - - return redirect()->route('peminjaman.laporan'); - - } - - public function histori() - { - $transactions = Transaction::returned()->get(); - - return view('lms.peminjaman.histori', compact('transactions')); - } - - -} diff --git a/app/Http/Controllers/PeriodeController.php b/app/Http/Controllers/PeriodeController.php index d8688d5..245cf90 100755 --- a/app/Http/Controllers/PeriodeController.php +++ b/app/Http/Controllers/PeriodeController.php @@ -1,4 +1,5 @@ -middleware('auth'); + public function __construct() + { + $this->middleware('auth'); + } - } + public function index() + { + $periodes = Periode::get(); + return view('lms.settings.periode.periode', compact('periodes')); + } - public function index() - { - - $periodes = Periode::get(); + public function edit($id) + { + $periode = Periode::findOrFail($id); + return view('lms.settings.periode.edit', compact('periode')); + } - return view('lms.settings.periode.periode', compact('periodes')); + public function update($id, PeriodeRequest $request) + { + $periode = Periode::findOrFail($id); - } + $input = $request->all(); - public function edit($id) - { - - $periode = Periode::findOrFail($id); + $periode->update($input); - return view('lms.settings.periode.edit', compact('periode')); + //process + $tglSekarang = time(); - } - - public function update($id, PeriodeRequest $request) - { - $periode = Periode::findOrFail($id); - - $input = $request->all(); - - $periode->update($input); - - //process - $tglSekarang = time(); - - $students = Student::get(); - - foreach ($students as $student) { - - $dateDiff = $tglSekarang - $student['registered_at']; - $durasi = floor($dateDiff/(60 * 60 * 24)); - $periodes = Periode::first(); - if($durasi > $periodes['days']){ - $student->update(['status' => 0]); - } - else{ - $student->update(['status' => 1]); - } - - } - - session()->flash('flash_message', 'You have been updated periode!'); - - return redirect()->route('settings.periode'); - - } + $students = Student::get(); + foreach ($students as $student) { + $dateDiff = $tglSekarang - $student['registered_at']; + $durasi = floor($dateDiff/(60 * 60 * 24)); + $periodes = Periode::first(); + if ($durasi > $periodes['days']) { + $student->update(['status' => 0]); + } else { + $student->update(['status' => 1]); + } + } + session()->flash('flash_message', 'You have been updated periode!'); + return redirect()->route('settings.periode'); + } } diff --git a/app/Http/Controllers/Publish/IndexController.php b/app/Http/Controllers/Publish/IndexController.php new file mode 100644 index 0000000..0510177 --- /dev/null +++ b/app/Http/Controllers/Publish/IndexController.php @@ -0,0 +1,219 @@ +session()->get('dataset'); + return view('publish.create-step1', compact('dataset', $dataset)); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function storeStep1(Request $request) + { + $validatedData = $this->validate($request, [ + 'Type' => 'required|min:4', + 'rights' => 'required|boolean|in:1' + ]); + // $validatedData = $request->validate([ + // 'name' => 'required|unique:products', + // 'amount' => 'required|numeric', + // 'company' => 'required', + // 'available' => 'required', + // 'description' => 'required', + // ]); + if (empty($request->session()->get('dataset'))) { + // $dataset = new Dataset(); + //$dataset->fill($validatedData); + // $dataset->type = $request->input('type'); + $dataset = $request->except('rights', '_token'); + $request->session()->put('dataset', $dataset); + } else { + $dataset = $request->session()->get('dataset'); + //$dataset->fill($validatedData); + $dataset['Type'] = $request->input('Type'); + $request->session()->put('dataset', $dataset); + } + return redirect()->route('dataset.create2'); + } + + /** + * Show the step 2 Form for creating a new dataset. + * + * @return \Illuminate\Http\Response + */ + public function createStep2(Request $request) + { + //if no dataset is'nt in session variable return to step1 + if (empty($request->session()->get('dataset'))) { + return redirect()->route('dataset.create1'); + } + + $dataset = $request->session()->get('dataset'); + + //fill select variable + $languages = DB::table('languages') + ->where('active', true) + ->pluck('part2_t', 'part2_t'); + + return view('publish.create-step2', compact('dataset', 'languages')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function storeStep2(Request $request) + { + $validatedData = $this->validate($request, [ + 'Type' => 'required|min:4', + 'BelongsToBibliography' => 'required|boolean', + "TitleMain.Value" => 'required|min:5|max:255', + "TitleMain.Language" => 'required|min:3', + "TitleAbstract.Value" => 'required|min:5|max:255', + "TitleAbstract.Language" => 'required|min:3' + ]); + $optionalData = $request->all(); + + // $dataset = $request->except('rights', '_token', 'input_img'); + + $dataset = $request->session()->get('dataset'); + + //update dataset with validated data + $dataset['Type'] = $validatedData['Type']; + $dataset['BelongsToBibliography'] = $validatedData['BelongsToBibliography']; + $dataset['TitleMain']['Value'] = $validatedData['TitleMain']['Value']; + $dataset['TitleMain']['Language'] = $validatedData['TitleMain']['Language']; + $dataset['TitleAbstract']['Value'] = $validatedData['TitleAbstract']['Value']; + $dataset['TitleAbstract']['Language'] = $validatedData['TitleAbstract']['Language']; + if (isset($optionalData['CreatingCorporation'])) { + $dataset['CreatingCorporation'] = $optionalData['CreatingCorporation']; + } + if (isset($optionalData['EmbargoDate'])) { + $dataset['EmbargoDate'] = $optionalData['EmbargoDate']; + } + + if (!isset($dataset['DatasetFile'])) { + $this->validate($request, [ + 'dataset_file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048' + ]); + + //update session variable + // $dataset = $request->session()->get('dataset'); + $image = $request->file('dataset_file'); + $fileName = "productImage-" . time() . '.' . $image->getClientOriginalExtension(); + $path = $image->storeAs( + 'files', + $fileName + ); + // $path = Storage::putFile('files', $image, $fileName); + + //$dataset = $request->session()->get('dataset'); + $dataset['DatasetFile'] = $fileName; + } + $request->session()->put('dataset', $dataset); + return redirect()->route('dataset.create3'); + } + + /** + * Show the Product Review page + * + * @return \Illuminate\Http\Response + */ + public function createStep3(Request $request) + { + //if no dataset is'nt in session variable return to step1 + if (empty($request->session()->get('dataset'))) { + return redirect()->route('dataset.create1'); + } + $dataset = $request->session()->get('dataset'); + return view('publish.create-step3', compact('dataset')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $dataset = $request->session()->get('dataset'); + // $product->save(); + // return redirect('/dataset'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php new file mode 100644 index 0000000..e38cfcc --- /dev/null +++ b/app/Http/Controllers/SearchController.php @@ -0,0 +1,162 @@ +client = $client; + // $config = config('solarium'); + // $config = array( + // 'endpoint' => array( + // 'localhost' => array( + // 'host' => '127.0.0.1', + // 'port' => '8983', + // 'path' => '/solr/#', + // 'core' => 'opus4' + // ) + // ) + // ); + // $this->client = new \Solarium\Client($config); + } + + public function ping() + { + // create a ping query + $ping = $this->client->createPing(); + + // execute the ping query + try { + $this->client->ping($ping); + return response()->json('OK'); + } catch (\Solarium\Exception\HttpException $e) { + return response()->json('ERROR', 500); + } + } + + public function search1(Request $request) : View + { + $this->_request = $request; + $data=$request->all(); + //$this->_searchtype = $request->input('searchtype'); + $this->_searchtype = $request->input('searchtype'); + return view('rdr.solrsearch.index'); + } + + public function search(Request $request) : View + { + Log::info('Received new search request. Redirecting to search action of IndexController.'); + $this->_request = $request; + + //$filter =$request->input('query'); + // $query = $this->client->createSelect(); + // $query->setQuery('%P1%', array($filter)); + // // $query->setQuery('*:*'); + + // $results = $this->client->select($query); + // // // display the total number of documents found by solr + // echo 'NumFound: ' .$results->getNumFound(); + + //$this->_query = Navigation::getQueryUrl($request); + $query = $this->buildQuery(); + if (!is_null($query)) { + $this->_query = $query; + $this->performSearch(); + + // set start and rows param (comparable to SQL limit) using fluent interface + //$query->setStart(2)->setRows(20); + // set fields to fetch (this overrides the default setting 'all fields') + //$query->setFields(array('id','year')); + + + $results = $this->_resultList->getResults(); + $numOfHits = $this->_numOfHits; + + + return view('rdr.solrsearch.index', compact('results', 'numOfHits')); + } + return view('rdr.solrsearch.index'); + } + + /** + * Displays simple search form. + */ + public function index() : View + { + $totalNumOfDocs = Dataset::count(); + return view('rdr.solrsearch.index', compact('totalNumOfDocs')); + } + + + public function searchDb(Request $request) : View + { + $searchType = "simple"; + $params = $request->all(); + //build query + $this->_searchtype = $request->input('searchtype'); + + + // Gets the query string from our form submission + //$query = Request::input('search'); + $filter = $request->input('search'); + + //$query = Input::get('search', ''); + // Returns an array of articles that have the query string located somewhere within + // our articles titles. Paginates them so we can break up lots of search results. + $books = Book::where('title', 'LIKE', '%' . $filter . '%') + ->get();//paginate(10); + + // returns a view and passes the view the list of articles and the original query. + return view('rdr.solrsearch.index', compact('books')); + } + + + #region private helper + + private function buildQuery() + { + $request = $this->_request; + $this->_searchtype = $request->input('searchtype'); + return Navigation::getQueryUrl($request); + } + + /** + * TODO this should happen in model class so it can be tested directly + */ + private function performSearch() + { + //$this->getLogger()->debug('performing search'); + try { + $searcher = new SolrSearchSearcher(); + // $openFacets = $this->_facetMenu->buildFacetArray( $this->getRequest()->getParams() ); + // $searcher->setFacetArray($openFacets); + $this->_resultList = $searcher->search($this->_query); + // $this->view->openFacets = $openFacets; + } catch (Exception $e) { + // $this->getLogger()->err(__METHOD__ . ' : ' . $e); + //throw new Application_SearchException($e); + echo 'Exception abgefangen: ', $e->getMessage(), "\n"; + } + $this->_numOfHits = $this->_resultList->getNumberOfHits(); + } + #endregion private helper +} diff --git a/app/Http/Controllers/Settings/CategoryController.php b/app/Http/Controllers/Settings/CategoryController.php new file mode 100644 index 0000000..796d9e7 --- /dev/null +++ b/app/Http/Controllers/Settings/CategoryController.php @@ -0,0 +1,96 @@ +middleware('auth'); + } + + public function index() : View + { + $projects = Project::get(); + return view('settings.project.category', compact('projects')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function add() : View + { + return view('settings.project.add'); + } + + public function store(ProjectRequest $request) : RedirectResponse + { + $input = $request->all(); + Project::create($input); + session()->flash('flash_message', 'You have added 1 project!'); + return redirect()->route('settings.project'); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) : View + { + $project = Project::findOrFail($id); + return view('settings.project.edit', compact('project')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id, ProjectRequest $request) : RedirectResponse + { + $project = Project::findOrFail($id); + $input = $request->all(); + $project->update($input); + session()->flash('flash_message', 'You have updated 1 project!'); + return redirect()->route('settings.project'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function delete($id) : RedirectResponse + { + $project = Project::with('documents')->findOrFail($id); + if ($project->documents->count() > 0) { + session()->flash( + 'flash_message', + 'You cannot delete this project!' + . ' There are ' + . $project->documents->count() + . ' documents in this project!' + ); + return redirect()->route('settings.project'); + } else { + $project->delete(); + session()->flash('flash_message', 'You have deleted 1 project!'); + return redirect()->route('settings.project'); + } + } +} diff --git a/app/Http/Controllers/Settings/DatasetController.php b/app/Http/Controllers/Settings/DatasetController.php new file mode 100644 index 0000000..f040a4b --- /dev/null +++ b/app/Http/Controllers/Settings/DatasetController.php @@ -0,0 +1,200 @@ +middleware('auth'); + } + + public function index(Request $request) : View + { + + $searchType = $request->input('searchtype'); + $builder = Dataset::query(); + //$registers = array(); + + $filter = $request->input('search'); + $state = (strlen($request->input('state')) > 0) ? $request->input('state') : "published"; + + $data = $request->all(); + + if ($searchType == "simple") { + if (strlen($filter) > 0) { + //$builder->where('field1', '=', $criteria1); + $builder->whereHas('titles', function ($query) use ($filter) { + $query->where('value', 'LIKE', '%' . $filter . '%'); + }); + // ::with(['titles' => function ($query) use($filter) { + // $query->where('value', 'LIKE', '%' . $filter . '%'); + // }]) + } + } + $builder->where('server_state', $state); + + + //$perPage = $request->get('perPage', 20); + $documents = $builder + ->paginate(8); + return view('settings.document.document', compact('documents')); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id): View + { + $document = Dataset::findOrFail($id); + $document->load('titles'); + $document->load('abstracts'); + return view('settings.document.show', compact('document')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // $categories = Category::lists('category', 'id'); + // $shelves = Shelf::lists('shelf', 'id'); + // $tanggal = date('Y-m-d'); + // $ambilTahun = substr($tanggal, 0, 4); + // for($tahun = 1990; $tahun <= $ambilTahun; $tahun++){ + // $years[] = $tahun; + // } + // return view('lms.settings.book.add', compact('categories', 'shelves', 'years')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(DocumentRequest $request) + { + // $input = $request->all(); + // $book = Book::create($input); + // session()->flash('flash_message', 'You have been addded 1 dataset!'); + // return redirect()->route('settings.book'); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) : View + { + $document = Dataset::findOrFail($id); + $document->load('licenses', 'titles', 'abstracts'); + + $projects = Project::pluck('label', 'id'); + + $datum = date('Y-m-d'); + $nowYear = substr($datum, 0, 4); + $years = array(); + for ($jahr = 1990; $jahr <= $nowYear; $jahr++) { + $years[$jahr] = $jahr; + } + + $languages = DB::table('languages') + ->where('active', true) + ->pluck('part2_t', 'part2_t'); + + //$options = License::all(); + $options = License::all('id', 'name_long'); + $checkeds = $document->licenses->pluck('id')->toArray(); + + //$shelves = Shelf::pluck('shelf', 'id'); + // $datum = date('Y-m-d'); + // $nowYear = substr($datum, 0, 4); + // $years = array(); + // for($jahr = 1990; $jahr <= $nowYear; $jahr++){ + // $years[$jahr] = $jahr; + // } + return view('settings.document.edit', compact('document', 'projects', 'options', 'checkeds', 'years', 'languages')); + } + + //https://stackoverflow.com/questions/17480200/using-laravel-how-do-i-create-a-view-that-will-update-a-one-to-many-relationshi?rq=1 + // https://laravel.io/forum/06-11-2014-how-to-save-eloquent-model-with-relations-in-one-go + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(DocumentRequest $request, $id) : RedirectResponse + { + $document = Dataset::findOrFail($id); + //$input = $request->all(); + $input = $request->except('licenses', 'titles'); + $document->update($input); + // $document->type = $input['type']; + // $document->thesis_year_accepted = $input['thesis_year_accepted']; + // $document->project_id = $input['project_id']; + // $document->save(); + + $licenses = $request->input('licenses'); + //$licenses = $input['licenses']; + $document->licenses()->sync($licenses); + + //save the titles: + $titles = $request->input('titles'); + if (is_array($titles) && count($titles) > 0) { + foreach ($titles as $key => $formTitle) { + $title = Title::findOrFail($key); + $title->value = $formTitle['value']; + $title->language = $formTitle['language']; + $title->save(); + } + } + + //save the abstracts: + $abstracts = $request->input('abstracts'); + if (is_array($abstracts) && count($abstracts) > 0) { + foreach ($abstracts as $key => $formAbstract) { + $abstract = Title::findOrFail($key); + $abstract->value = $formAbstract['value']; + $abstract->language = $formAbstract['language']; + $abstract->save(); + } + } + + session()->flash('flash_message', 'You have updated 1 dataset!'); + return redirect()->route('settings.document'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) : RedirectResponse + { + // $document = Document::findOrFail($id); + // $document->delete(); + // session()->flash('flash_message', 'You have been deleted 1 dataset!'); + return redirect()->route('settings.document'); + } +} diff --git a/app/Http/Controllers/Settings/LicenseController.php b/app/Http/Controllers/Settings/LicenseController.php new file mode 100644 index 0000000..bec9db1 --- /dev/null +++ b/app/Http/Controllers/Settings/LicenseController.php @@ -0,0 +1,47 @@ +middleware('auth'); + $test = "test"; + } + + public function index() : View + { + $licenses = License::get(); + return view('settings.license.license', compact('licenses')); + } + + public function edit($id): View + { + $license = License::findOrFail($id); + //$languages = Language::where('active', true)->pluck('part2_t'); + $languages = DB::table('languages') + ->where('active', true) + ->pluck('part2_t', 'part2_t'); + + return view('settings.license.edit', compact('license', 'languages')); + } + + public function update($id, LicenseRequest $request): RedirectResponse + { + $license = License::findOrFail($id); + $input = $request->all(); + $license->update($input); + session()->flash('flash_message', 'You have updated the license!'); + return redirect()->route('settings.license'); + } +} diff --git a/app/Http/Controllers/Settings/PersonController.php b/app/Http/Controllers/Settings/PersonController.php new file mode 100644 index 0000000..4139c3f --- /dev/null +++ b/app/Http/Controllers/Settings/PersonController.php @@ -0,0 +1,133 @@ +middleware('auth'); + //$this->middleware('role:reviewer'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index(): View + { + //$persons = Person::get(); + $persons = Person::with('documents')->get(); + return view('settings.person.person', compact('persons')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function add(): View + { + return view('settings.person.add'); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(PersonRequest $request) + { + $input = $request->all(); + $input['registered_at'] = time(); + Person::create($input); + session()->flash('flash_message', 'You have added 1 person!'); + return redirect()->route('settings.person'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $person = Person::with('documents')->findOrFail($id); + return view('settings.person.edit', compact('person')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update($id, PersonRequest $request) + { + $person = Person::findOrFail($id); + $input = $request->all(); + $person->update($input); + session()->flash('flash_message', 'You have updated 1 person!'); + return redirect()->route('settings.person'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function delete($id) + { + $person = Person::with('documents')->findOrFail($id); + if ($person->documents->count() > 0) { + // $person->documents()->detach(); + // $person->delete(); + session()->flash('flash_message', 'You cannot delete this person!'); + } else { + $person->delete(); + session()->flash('flash_message', 'You have deleted 1 person!'); + } + return redirect()->route('settings.person'); + } + + /** + * deactivate author, submitter etc.... + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function down($id): RedirectResponse + { + $person = Person::findOrFail($id); + $person->update(['status' => 0, 'registered_at' => 00000000]); + session()->flash('flash_message', 'person has been deactivated!'); + return redirect()->route('settings.person'); + } + + /** + * activatew author, submitter etc.... + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function up($id): RedirectResponse + { + $dateNow = time(); + $person = Person::findOrFail($id); + $person->update(['status' => 1, 'registered_at' => $dateNow]); + session()->flash('flash_message', 'person has been activated!'); + return redirect()->route('settings.person'); + } +} diff --git a/app/Http/Controllers/Settings/RoleController.php b/app/Http/Controllers/Settings/RoleController.php new file mode 100644 index 0000000..89eba07 --- /dev/null +++ b/app/Http/Controllers/Settings/RoleController.php @@ -0,0 +1,108 @@ +roles->pluck('name','name')->all(); + $checkeds = $role->permissions->pluck('id')->toArray(); + return view('settings.role.edit', compact('role', 'permissions', 'checkeds')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Role $role + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $this->validate(request(), [ + 'name' => 'required' + ]); + $role = Role::findOrFail($id); + $role->update($request->except('permissions')); + + $permissions = $request->input('permissions') ? $request->input('permissions') : []; + //$role->syncPermissions($permissions); + if (isset($permissions)) { + $role->permissions()->sync($permissions);//If one or more role is selected associate user to roles + } else { + $role->permissions()->detach(); //If no role is selected remove exisiting role associated to a user + } + + return redirect()->route('role.index') + ->with('flash_message', 'Role successfully edited.'); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Role $role + * @return \Illuminate\Http\Response + */ + public function destroy(Role $role) + { + // + } +} diff --git a/app/Http/Controllers/Settings/UserController.php b/app/Http/Controllers/Settings/UserController.php new file mode 100644 index 0000000..eaa3695 --- /dev/null +++ b/app/Http/Controllers/Settings/UserController.php @@ -0,0 +1,169 @@ +paginate(5); + return view('settings.user.user', compact('users')) + ->with('i', ($request->input('page', 1) - 1) * 5); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + //$roles = Role::pluck('name','name')->all(); + $roles = Role::all('id', 'name'); + return view('settings.user.create', compact('roles')); + } + + /** + + * Store a newly created resource in storage. + + * + + * @param \Illuminate\Http\Request $request + + * @return \Illuminate\Http\Response + + */ + + public function store(Request $request) + { + $this->validate($request, [ + 'login' => 'required', + 'email' => 'required|email|unique:accounts', + 'password' => 'required|min:6|confirmed' + //'roles' => 'required' + ]); + + //$input = $request->all(); + $input = $request->only(['login', 'email', 'password']); //Retreive the name, email and password fields + $input['password'] = bcrypt($input['password']); + $user = User::create($input); + + + $roles = $request['roles']; //Retrieving the roles field + //Checking if a role was selected + if (isset($roles)) { + foreach ($roles as $role) { + $role_r = Role::where('id', '=', $role)->firstOrFail(); + $user->assignRole($role_r); //Assigning role to user + } + } + + return redirect() + ->route('user.index') + ->with('success', 'User has been created successfully'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $user = User::find($id); + return view('settings.user.show', compact('user')); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $user = User::find($id); + $roles = Role::all('id', 'name'); + + //$userRoles = $user->roles->pluck('name','name')->all(); + $checkeds = $user->roles->pluck('id')->toArray(); + + return view('settings.user.edit', compact('user', 'roles', 'checkeds')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + + $this->validate(request(), [ + 'login' => 'required', + 'email' => 'required|email|unique:accounts,email,' . $id, + 'password' => 'required|min:6|confirmed' + ]); + + $user = User::findOrFail($id); + // $input = $request->except('roles'); + // $user->fill($input)->save(); + + $input = $request->only(['login', 'email', 'password']); //Retreive the name, email and password fields + //$input = $request->all(); + $user->login = $input['login']; + $user->email = $input['email']; + $user->password = bcrypt($input['password']); + $user->save(); + + $roles = $request['roles']; //Retreive all roles + + if (isset($roles)) { + $user->roles()->sync($roles);//If one or more role is selected associate user to roles + } else { + $user->roles()->detach(); //If no role is selected remove exisiting role associated to a user + } + + //return back()->with('flash_message', 'user successfully updated.'); + return redirect() + ->route('user.index') + ->with('flash_message', 'User successfully edited.'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + //Find a user with a given id and delete + $user = User::findOrFail($id); + $user->delete(); + + return redirect() + ->route('user.index') + ->with('flash_message', 'User successfully deleted.'); + } +} diff --git a/app/Http/Controllers/ShelfController.php b/app/Http/Controllers/ShelfController.php index 2b5f672..ec9afd6 100755 --- a/app/Http/Controllers/ShelfController.php +++ b/app/Http/Controllers/ShelfController.php @@ -1,4 +1,5 @@ -middleware('auth'); + } - $this->middleware('auth'); + public function index() + { + $shelves = Shelf::get(); + return view('lms.settings.shelf.shelf', compact('shelves')); + } - } + public function add() + { + return view('lms.settings.shelf.add'); + } - public function index() - { - $shelves = Shelf::get(); + public function store(ShelfRequest $request) + { + $input = $request->all(); - return view('lms.settings.shelf.shelf', compact('shelves')); - } + $shelf = Shelf::create($input); - public function add() - { - - return view('lms.settings.shelf.add'); + //flash messaging + session()->flash('flash_message', 'You have been added 1 shelf!'); - } + return redirect()->route('settings.shelf'); + } - public function store(ShelfRequest $request) - { - - $input = $request->all(); + public function edit($id) + { + $shelf = Shelf::findOrFail($id); + return view('lms.settings.shelf.edit', compact('shelf')); + } - $shelf = Shelf::create($input); + public function update($id, ShelfRequest $request) + { + $shelf = Shelf::findOrFail($id); - //flash messaging - session()->flash('flash_message', 'You have been added 1 shelf!'); + $input = $request->all(); - return redirect()->route('settings.shelf'); + $shelf->update($input); - } + session()->flash('flash_message', 'You have been updated 1 shelf!'); - public function edit($id) - { - - $shelf = Shelf::findOrFail($id); + return redirect()->route('settings.shelf'); + } - return view('lms.settings.shelf.edit', compact('shelf')); + public function delete($id) + { + $shelf = Shelf::findOrFail($id); - } + $shelf->delete(); - public function update($id, ShelfRequest $request) - { - - $shelf = Shelf::findOrFail($id); - - $input = $request->all(); - - $shelf->update($input); - - session()->flash('flash_message', 'You have been updated 1 shelf!'); - - return redirect()->route('settings.shelf'); - - } - - public function delete($id) - { - - $shelf = Shelf::findOrFail($id); - - $shelf->delete(); - - session()->flash('flash_message', 'You have been deleted 1 shelf!'); - - return redirect()->route('settings.shelf'); - - } + session()->flash('flash_message', 'You have been deleted 1 shelf!'); + return redirect()->route('settings.shelf'); + } } diff --git a/app/Http/Controllers/SitelinkController.php b/app/Http/Controllers/SitelinkController.php new file mode 100644 index 0000000..20a54f9 --- /dev/null +++ b/app/Http/Controllers/SitelinkController.php @@ -0,0 +1,61 @@ +where('server_state', 'LIKE', "%".$serverState."%"); + + $select + ->select(DB::raw('YEAR(published_date) as published_date')) + ->distinct(true); + + $this->years = $select->pluck('published_date'); + $this->ids = array(); + return view('rdr.sitelink.index')->with(['years'=> $this->years,'documents'=> $this->ids]); + } + + public function list($year) + { + $this->index(); + if (preg_match('/^\d{4}$/', $year) > 0) { + $serverState = 'published'; + //$select = DB::table('documents') + //->where('server_state','LIKE', "%".$serverState."%"); + $select = Dataset::with('titles', 'authors') + ->where('server_state', 'LIKE', "%".$serverState."%"); + + $from = (int)$year; + $until = $year + 1; + $select + ->whereYear('server_date_published', '>=', $from) + ->whereYear('server_date_published', '<', $until); + + + $documents = $select + ->get(); + + //$this->years = Dataset::select(DB::raw('YEAR(server_date_modified) as server_date_modified')) + //->distinct(true) + //->pluck('server_date_modified'); + //->filter(function ($item) use ($year){ + // return $item->year !== $year; + //}); + + + //$select->select('id'); + //$this->ids = $select->pluck('id'); + //return view('rdr.sitelink.index')->with(['years'=> $this->years,'ids'=> $this->ids]); + return view('rdr.sitelink.index')->with(['years'=> $this->years,'documents'=> $documents]); + } + } +} diff --git a/app/Http/Controllers/StaticPageController.php b/app/Http/Controllers/StaticPageController.php new file mode 100644 index 0000000..73c4e15 --- /dev/null +++ b/app/Http/Controllers/StaticPageController.php @@ -0,0 +1,25 @@ +middleware('auth'); + } + + public function imprint() + { + ////$books = Book::available()->orderByTitle()->lists('title', 'id'); + //$persons = Person::active()->orderByName()->pluck('last_name', 'id'); + ////$categories = Category::lists('category', 'id'); + //$categories = Project::get(); + + //return view('rdr.borrow.borrow', compact('persons', 'categories')); + } +} diff --git a/app/Http/Controllers/StudentController.php b/app/Http/Controllers/StudentController.php deleted file mode 100755 index edbcc47..0000000 --- a/app/Http/Controllers/StudentController.php +++ /dev/null @@ -1,114 +0,0 @@ -middleware('auth'); - - } - - public function index() - { - - $students = Student::get(); - - return view('lms.settings.student.student', compact('students')); - - } - - public function add() - { - - return view('lms.settings.student.add'); - - } - - public function store(StudentRequest $request) - { - - $input = $request->all(); - - $input['registered_at'] = time(); - - $student = Student::create($input); - - return redirect()->route('settings.student'); - - session()->flash('flash_message', 'You have been added 1 student!'); - - } - - public function edit($id) - { - - $student = Student::findOrFail($id); - - return view('lms.settings.student.edit', compact('student')); - - } - - public function update($id, StudentRequest $request) - { - - $student = Student::findOrFail($id); - - $input = $request->all(); - - $student->update($input); - - session()->flash('flash_message', 'You have been updated 1 student!'); - - return redirect()->route('settings.student'); - - } - - public function delete($id) - { - - $student = Student::findOrFail($id); - - $student->delete(); - - session()->flash('flash_message', 'You have been deleted 1 student!'); - - return redirect()->route('settings.student'); - - } - - public function down($id) - { - - $student = Student::findOrFail($id); - - $student->update(['status' => 0, 'registered_at' => 12960000]); - - session()->flash('flash_message', 'Anda telah mematikan masa aktif 1 siswa!'); - - return redirect()->route('settings.student'); - - } - - public function up($id) - { - $dateNow = time(); - - $student = Student::findOrFail($id); - - $student->update(['status' => 1, 'registered_at' => $dateNow]); - - session()->flash('flash_message', 'Anda telah melakukan perpanjangan masa aktif siswa!'); - - return redirect()->route('settings.student'); - - - } - -} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 0a2addc..d9dd15d 100755 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -1,32 +1,63 @@ - 'App\Http\Middleware\Authenticate', - 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', - 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', - ]; + /** + * The application's route middleware groups. + * + * @var array + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + //\Opus4\Http\Middleware\Locale::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' => 'App\Http\Middleware\Authenticate', + 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, + 'perm' => \App\Http\Middleware\PermissionMiddleware::class, + + ]; } diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 72a7613..fd09d64 100755 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -1,50 +1,47 @@ -auth = $auth; - } + /** + * Create a new filter instance. + * + * @param Guard $auth + * @return void + */ + public function __construct(Guard $auth) + { + $this->auth = $auth; + } - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if ($this->auth->guest()) - { - if ($request->ajax()) - { - return response('Unauthorized.', 401); - } - else - { - return redirect()->guest('auth/login'); - } - } - - return $next($request); - } + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next) + { + if ($this->auth->guest()) { + if ($request->ajax()) { + return response('Unauthorized.', 401); + } else { + return redirect()->guest('auth/login'); + } + } + return $next($request); + } } diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..b540c39 --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,16 @@ +ajax()) { + return response('Unauthorized.', 401); + } else { + return redirect()->guest('/login'); + } + } + + //if (! $request->user()->hasRole($role)) + //{ + // abort(401); + //} + foreach ($request->user()->roles()->get() as $role) { + if ($role->hasPermissionTo($permission)) { + return $next($request); + } + //break(1); + } + + //if (! $request->user()->can($permission)) + //{ + // abort(401); + //} + return abort(401); + //return $next($request); + } +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index dd5a867..90f2dc8 100755 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -1,44 +1,25 @@ -auth = $auth; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @return mixed - */ - public function handle($request, Closure $next) - { - if ($this->auth->check()) - { - return new RedirectResponse(url('/home')); - } - - return $next($request); - } +class RedirectIfAuthenticated +{ + + /** + * Handle an incoming request. + * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @return mixed + */ + public function handle($request, Closure $next, $guard = null) + { + if (Auth::guard($guard)->check()) { + return redirect('/'); + } + return $next($request); + } } diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..1e3965e --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,25 @@ + 'required|min:5', - 'author' => 'required|min:4', - 'stock' => 'required|integer', - 'year' => 'required|integer|min:4' - ]; - } + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'title' => 'required|min:5', + 'author' => 'required|min:4', + 'stock' => 'required|integer', + 'year' => 'required|integer|min:4' + ]; + } } diff --git a/app/Http/Requests/CategoryRequest.php b/app/Http/Requests/CategoryRequest.php deleted file mode 100755 index 2daece3..0000000 --- a/app/Http/Requests/CategoryRequest.php +++ /dev/null @@ -1,31 +0,0 @@ - 'required|min:3' - - ]; - } - -} diff --git a/app/Http/Requests/DocumentRequest.php b/app/Http/Requests/DocumentRequest.php new file mode 100644 index 0000000..94d15cb --- /dev/null +++ b/app/Http/Requests/DocumentRequest.php @@ -0,0 +1,33 @@ + 'required|min:5', + // 'author' => 'required|min:4', + // 'stock' => 'required|integer', + // 'year' => 'required|integer|min:4' + ]; + } +} diff --git a/app/Http/Requests/FinesRequest.php b/app/Http/Requests/FinesRequest.php deleted file mode 100755 index fe7a04a..0000000 --- a/app/Http/Requests/FinesRequest.php +++ /dev/null @@ -1,30 +0,0 @@ - 'required|integer', - 'fines' => 'required|integer' - ]; - } - -} diff --git a/app/Http/Requests/LicenseRequest.php b/app/Http/Requests/LicenseRequest.php new file mode 100644 index 0000000..6b8a675 --- /dev/null +++ b/app/Http/Requests/LicenseRequest.php @@ -0,0 +1,38 @@ + 'max:4000', + 'language' => 'max:3', + 'link_licence' => 'required|url:max:255', + 'link_logo' => 'url|max:255', + 'mime_type' => 'max:30', + 'name_long' => 'required|min:5|max:255', + 'sort_order' => 'required|integer', + 'active' => 'required|boolean', + 'pod_allowed' => 'required|boolean' + ]; + } +} diff --git a/app/Http/Requests/PeminjamanRequest.php b/app/Http/Requests/PeminjamanRequest.php index 9c21a30..a108f7c 100755 --- a/app/Http/Requests/PeminjamanRequest.php +++ b/app/Http/Requests/PeminjamanRequest.php @@ -1,29 +1,30 @@ - 'required|integer' - ]; - } +class PeriodeRequest extends Request +{ + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'days' => 'required|integer' + ]; + } } diff --git a/app/Http/Requests/PersonRequest.php b/app/Http/Requests/PersonRequest.php new file mode 100644 index 0000000..b42a12b --- /dev/null +++ b/app/Http/Requests/PersonRequest.php @@ -0,0 +1,34 @@ + 'nullable|min:2|max:255', + 'last_name' => 'required|min:3|max:255', + 'first_name' => 'nullable|min:3|max:255', + 'email' => 'nullable|email|max:100', + 'identifier_orcid' => 'nullable|min:19|max:50', + 'status' => 'required|boolean' + ]; + } +} diff --git a/app/Http/Requests/ProjectRequest.php b/app/Http/Requests/ProjectRequest.php new file mode 100644 index 0000000..846910a --- /dev/null +++ b/app/Http/Requests/ProjectRequest.php @@ -0,0 +1,32 @@ + 'required|min:3|max:255', + 'label' => 'required|min:3|max:10' + + ]; + } +} diff --git a/app/Http/Requests/Request.php b/app/Http/Requests/Request.php index 4516ab2..b240394 100755 --- a/app/Http/Requests/Request.php +++ b/app/Http/Requests/Request.php @@ -1,9 +1,9 @@ - 'required' - ]; - } + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'shelf' => 'required' + ]; + } } diff --git a/app/Http/Requests/StudentRequest.php b/app/Http/Requests/StudentRequest.php deleted file mode 100755 index c4e92bc..0000000 --- a/app/Http/Requests/StudentRequest.php +++ /dev/null @@ -1,31 +0,0 @@ - 'required|min:5' - - ]; - } - -} diff --git a/app/Http/routes.php b/app/Http/routes.php index d1a0bba..ec43556 100755 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -1,5 +1,7 @@ 'api.dropdown.peminjaman', 'uses' => 'PeminjamanController@dropdown' -// ]); - -Route::get('/api/dropdown/peminjaman/{id}', function($id){ - - if(Request::ajax()){ - - //$category_id = Input::get('category_id'); - - $books = Book::available()->orderByTitle()->where('category_id', '=', $id)->get(); - - return Response::json($books); - - } - - - + */ +// Route::get('/api/dropdown/peminjaman/{id}', [ +// 'as' => 'api.dropdown.peminjaman', 'uses' => 'PeminjamanController@dropdown' +// ]); +Route::get('/api/dropdown/borrow/{id}', function ($id) { + if (Request::ajax()) { + //$category_id = Input::get('category_id'); + // $books = Book::available()->orderByTitle()->where('category_id', '=', $id)->get(); + $books = Dataset::OrderByType()->where('project_id', '=', $id)->get(); + return Response::json($books); + } }); - - -Route::get('/', [ - 'as' => 'index', 'uses' => 'PagesController@index' - ]); -Route::get('books', [ - 'as' => 'books', 'uses' => 'PagesController@books' - ]); - -Route::get('peminjaman', [ - 'as' => 'peminjaman.peminjaman', 'uses' => 'PeminjamanController@index' - ]); -Route::post('peminjaman', [ - 'as' => 'peminjaman.post', 'uses' => 'PeminjamanController@store' - ]); - -Route::get('laporan', [ - 'as' => 'peminjaman.laporan', 'uses' => 'PeminjamanController@laporan' - ]); -Route::get('pengembalian/{id}', [ - 'as' => 'peminjaman.pengembalian', 'uses' => 'PeminjamanController@pengembalian' - ]); -Route::get('perpanjang/{id}', [ - 'as' => 'peminjaman.perpanjang', 'uses' => 'PeminjamanController@perpanjang' - ]); - -Route::get('histori', [ - 'as' => 'peminjaman.histori', 'uses' => 'PeminjamanController@histori' - ]); - - - - - -//setting - - -//=================================================setting category==================================================== -Route::get('/settings/category', [ - 'as' => 'settings.category', 'uses' => 'CategoryController@index' - ]); -Route::get('/settings/category/add', [ - 'as' => 'settings.category.add', 'uses' => 'CategoryController@add' - ]); -Route::post('settings/category/add', [ - 'as' => 'settings.category.post', 'uses' => 'CategoryController@store' - ]); -Route::get('settings/category/edit/{id}', [ - 'as' => 'settings.category.edit', 'uses' => 'CategoryController@edit' - ]); -Route::patch('settings/category/edit/{id}', [ - 'as' => 'settings.category.update', 'uses' => 'CategoryController@update' - ]); -Route::get('settings/category/delete/{id}', [ - 'as' => 'settings.category.delete', 'uses' => 'CategoryController@delete' - ]); -//========================================================================================================================== - - -//=================================================setting shelf========================================================== -Route::get('/settings/shelf', [ - 'as' => 'settings.shelf', 'uses' => 'ShelfController@index' - ]); -Route::get('/settings/shelf/add', [ - 'as' => 'settings.shelf.add', 'uses' => 'ShelfController@add' - ]); -Route::post('settings/shelf/add', [ - 'as' => 'settings.shelf.post', 'uses' => 'ShelfController@store' - ]); -Route::get('settings/shelf/edit/{id}', [ - 'as' => 'settings.shelf.edit', 'uses' => 'ShelfController@edit' - ]); -Route::patch('settings/shelf/edit/{id}', [ - 'as' => 'settings.shelf.update', 'uses' => 'ShelfController@update' - ]); -Route::get('settings/category/delete/{id}', [ - 'as' => 'settings.shelf.delete', 'uses' => 'ShelfController@delete' - ]); -//========================================================================================================================== - - -//=================================================setting fines========================================================== -Route::get('/settings/fines', [ - 'as' => 'settings.fines', 'uses' => 'FinesController@index' - ]); -Route::get('settings/fines/edit/{id}', [ - 'as' => 'settings.fines.edit', 'uses' => 'FinesController@edit' - ]); -Route::patch('settings/fines/edit/{id}', [ - 'as' => 'settings.fines.update', 'uses' => 'FinesController@update' - ]); -//========================================================================================================================== - - -//=================================================setting periode========================================================== -Route::get('/settings/periode', [ - 'as' => 'settings.periode', 'uses' => 'PeriodeController@index' - ]); -Route::get('settings/periode/edit/{id}', [ - 'as' => 'settings.periode.edit', 'uses' => 'PeriodeController@edit' - ]); -Route::patch('settings/periode/edit/{id}', [ - 'as' => 'settings.periode.update', 'uses' => 'PeriodeController@update' - ]); -//========================================================================================================================== - -//=================================================setting student========================================================== -Route::get('/settings/student', [ - 'as' => 'settings.student', 'uses' => 'StudentController@index' - ]); -Route::get('/settings/student/add', [ - 'as' => 'settings.student.add', 'uses' => 'StudentController@add' - ]); -Route::post('settings/student/add', [ - 'as' => 'settings.student.post', 'uses' => 'StudentController@store' - ]); -Route::get('settings/student/edit/{id}', [ - 'as' => 'settings.student.edit', 'uses' => 'StudentController@edit' - ]); -Route::patch('settings/student/edit/{id}', [ - 'as' => 'settings.student.update', 'uses' => 'StudentController@update' - ]); -Route::get('settings/student/delete/{id}', [ - 'as' => 'settings.student.delete', 'uses' => 'StudentController@delete' - ]); -Route::get('settings/student/down/{id}', [ - 'as' => 'settings.student.down', 'uses' => 'StudentController@down' - ]); -Route::get('settings/student/up/{id}', [ - 'as' => 'settings.student.up', 'uses' => 'StudentController@up' - ]); -//========================================================================================================================== - -//=================================================setting book============================================================= -Route::get('/settings/book', [ - 'as' => 'settings.book', 'uses' => 'BookController@index' - ]); -Route::get('/settings/book/add', [ - 'as' => 'settings.book.add', 'uses' => 'BookController@add' - ]); -Route::post('settings/book/add', [ - 'as' => 'settings.book.post', 'uses' => 'BookController@store' - ]); -Route::get('settings/book/edit/{id}', [ - 'as' => 'settings.book.edit', 'uses' => 'BookController@edit' - ]); -Route::patch('settings/book/edit/{id}', [ - 'as' => 'settings.book.update', 'uses' => 'BookController@update' - ]); -Route::get('settings/book/delete/{id}', [ - 'as' => 'settings.book.delete', 'uses' => 'BookController@delete' - ]); - -//======================================================================================================================== - - -Route::controllers([ - 'auth' => 'Auth\AuthController', - 'password' => 'Auth\PasswordController', -]); diff --git a/app/Language.php b/app/Language.php new file mode 100644 index 0000000..f514fc4 --- /dev/null +++ b/app/Language.php @@ -0,0 +1,13 @@ +createQueryBuilderInputFromRequest($request); + + if (is_null($request->input('sortfield')) && + ($request->input('browsing') === 'true' || $request->input('searchtype') === 'collection')) { + $queryBuilderInput['sortField'] = 'server_date_published'; + } + + if ($request->input('searchtype') === Searchtypes::LATEST_SEARCH) { + return $queryBuilder->createSearchQuery(self::validateInput($queryBuilderInput, 10, 100)); + } + + $solrSearchQuery = $queryBuilder->createSearchQuery(self::validateInput($queryBuilderInput, 1, 100)); + return $solrSearchQuery; + //$queryBuilder->createSearchQuery(self::validateInput($queryBuilderInput,1, 100)); + } + + /** + * Adjust the actual rows parameter value if it is not between $min + * and $max (inclusive). In case the actual value is smaller (greater) + * than $min ($max) it is adjusted to $min ($max). + * + * Sets the actual start parameter value to 0 if it is negative. + * + * @param array $data An array that contains the request parameters. + * @param int $lowerBoundInclusive The lower bound. + * @param int $upperBoundInclusive The upper bound. + * @return int Returns the actual rows parameter value or an adjusted value if + * it is not in the interval [$lowerBoundInclusive, $upperBoundInclusive]. + * + */ + private static function validateInput(array $input, $min = 1, $max = 100) : array + { + if ($input['rows'] > $max) { + // $logger->warn("Values greater than $max are currently not allowed for the rows paramter."); + $input['rows'] = $max; + } + if ($input['rows'] < $min) { + // $logger->warn("rows parameter is smaller than $min: adjusting to $min."); + $input['rows'] = $min; + } + if ($input['start'] < 0) { + // $logger->warn("A negative start parameter is ignored."); + $input['start'] = 0; + } + return $input; + } +} diff --git a/app/Library/Search/SearchResult.php b/app/Library/Search/SearchResult.php new file mode 100644 index 0000000..9ec1514 --- /dev/null +++ b/app/Library/Search/SearchResult.php @@ -0,0 +1,313 @@ + null, + 'count' => null, + 'querytime' => null, + 'facets' => null, + ); + protected $validated = false; + + public function __construct() + { + } + + /** + * @return SearchResult + */ + public static function create() + { + return new static(); + } + + /** + * Assigns matches returned in response to search query. + * + * @param mixed $documentId ID of document considered match of related search query + * @return SearchResultMatch + */ + public function addMatch($documentId) + { + if (!is_array($this->data['matches'])) { + $this->data['matches'] = array(); + } + $match = SearchResultMatch::create($documentId); + $this->data['matches'][] = $match; + + return $match; + } + + /** + * Sets number of all matching documents. + * + * @note This may include documents not listed as matches here due to using + * paging parameters on query. + * + * @param int $allMatchesCount number of all matching documents + * @return $this fluent interface + */ + public function setAllMatchesCount($allMatchesCount) + { + if (!is_null($this->data['count'])) { + throw new RuntimeException('must not set count of all matches multiple times'); + } + + if (!ctype_digit(trim($allMatchesCount))) { + throw new InvalidArgumentException('invalid number of overall matches'); + } + $this->data['count'] = intval($allMatchesCount); + + return $this; + } + + /** + * Sets information on time taken for querying search engine. + * + * @param string $time + * @return $this fluent interface + */ + public function setQueryTime($time) + { + if (!is_null($this->data['querytime'])) { + throw new RuntimeException('must not set query time multiple times'); + } + if (!is_null($time)) { + $this->data['querytime'] = trim($time); + } + + return $this; + } + + /** + * Adds another result of faceted search to current result set. + * + * @param string $facetField name of field result of faceted search is related to + * @param string $text description on particular faceted result on field (e.g. single value in field) + * @param int $count number of occurrences of facet on field in all matches + * @return $this fluent interface + * + * TODO special year_inverted facet handling should be moved to separate class + */ + public function addFacet($facetField, $text, $count) + { + $facetField = strval($facetField); + + // remove inverted sorting prefix from year values + if ($facetField === 'year_inverted') { + $text = explode(':', $text, 2)[1]; + + // treat 'year_inverted' as if it was 'year' + $facetField = 'year'; + } + + // treat 'year_inverted' as if it was 'year' + if ($facetField === 'year_inverted') { + $facetField = 'year'; + } + + if (!is_array($this->data['facets'])) { + $this->data['facets'] = array(); + } + + if (!array_key_exists($facetField, $this->data['facets'])) { + $this->data['facets'][$facetField] = array(); + } + + $this->data['facets'][$facetField][] = new Opus_Search_Result_Facet($text, $count); + + return $this; + } + + /** + * Retrieves results of faceted search. + * + * @return Opus_Search_Result_Facet[][] map of fields' names into sets of facet result per field + */ + public function getFacets() + { + return is_null($this->data['facets']) ? array() : $this->data['facets']; + } + + /** + * Retrieves set of facet results on single field selected by name. + * + * @param string $fieldName name of field returned facet result is related to + * @return Opus_Search_Result_Facet[] set of facet results on selected field + */ + public function getFacet($fieldName) + { + if ($this->data['facets'] && array_key_exists($fieldName, $this->data['facets'])) { + return $this->data['facets'][$fieldName]; + } + + return array(); + } + + /** + * Retrieves set of matching and locally existing documents returned in + * response to some search query. + * + * @return Opus_Search_Result_Match[] + */ + public function getReturnedMatches() + { + if (is_null($this->data['matches'])) { + return array(); + } + + // map AND FILTER set of returned matches ensuring to list related + // documents existing locally, only + $matches = array(); + + foreach ($this->data['matches'] as $match) { + try { + /** @var SearchResultMatch $match */ + // $match->getDocument(); + $matches[] = $match; + } catch (Opus_Document_Exception $e) { + Opus_Log::get()->warn('skipping matching but locally missing document #' . $match->getId()); + } + } + return $matches; + } + + /** + * Retrieves set of matching documents' IDs returned in response to some + * search query. + * + * @note If query was requesting to retrieve non-qualified matches this set + * might include IDs of documents that doesn't exist locally anymore. + * + * @return int[] + */ + public function getReturnedMatchingIds() + { + if (is_null($this->data['matches'])) { + return array(); + } + + return array_map(function ($match) { + /** @var SearchResultMatch $match */ + return $match->getId(); + }, $this->data['matches']); + } + + /** + * Retrieves set of matching documents. + * + * @note This is provided for downward compatibility, though it's signature + * has changed in that it's returning set of Opus_Document instances + * rather than set of Opus_SolrSearch_Result instances. + * + * @note The wording is less specific in that all information in response to + * search query may considered results of search. Thus this new API + * prefers "matches" over "results". + * + * @deprecated + * @return Opus_Document[] + */ + public function getResults() + { + return $this->getReturnedMatches(); + } + + /** + * Removes all returned matches referring to Opus documents missing in local + * database. + * + * @return $this + */ + public function dropLocallyMissingMatches() + { + if (!$this->validated) { + $finder = new Opus_DocumentFinder(); + + $returnedIds = $this->getReturnedMatchingIds(); + $existingIds = $finder + ->setServerState('published') + ->setIdSubset($returnedIds) + ->ids(); + + if (count($returnedIds) !== count($existingIds)) { + Opus_Log::get()->err(sprintf( + "inconsistency between db and search index: index returns %d documents, but only %d found in db", + count($returnedIds), + count($existingIds) + )); + + // update set of returned matches internally + $this->data['matches'] = array(); + foreach ($existingIds as $id) { + $this->addMatch($id); + } + // set mark to prevent validating matches again + $this->validated = true; + } + } + return $this; + } + + /** + * Retrieves overall number of matches. + * + * @note This number includes matches not included in fetched subset of + * matches. + * + * @return int + */ + public function getAllMatchesCount() + { + if (is_null($this->data['count'])) { + throw new RuntimeException('count of matches have not been provided yet'); + } + return $this->data['count']; + } + + /** + * Retrieves overall number of matches. + * + * @note This is provided for downward compatibility. + * + * @deprecated + * @return int + */ + public function getNumberOfHits() + { + return $this->getAllMatchesCount(); + } + + /** + * Retrieves information on search query's processing time. + * + * @return mixed + */ + public function getQueryTime() + { + return $this->data['querytime']; + } + + public function __get($name) + { + switch (strtolower(trim($name))) { + case 'matches': + return $this->getReturnedMatches(); + + case 'allmatchescount': + return $this->getAllMatchesCount(); + + case 'querytime': + return $this->getQueryTime(); + default: + throw new RuntimeException('invalid request for property ' . $name); + } + } +} diff --git a/app/Library/Search/SolariumAdapter.php b/app/Library/Search/SolariumAdapter.php new file mode 100644 index 0000000..5af5516 --- /dev/null +++ b/app/Library/Search/SolariumAdapter.php @@ -0,0 +1,218 @@ +options = $options; + $this->client = new \Solarium\Client($options); + + // ensure service is basically available + $ping = $this->client->createPing(); + $this->execute($ping, 'failed pinging service ' . $serviceName); + } + + /** + * Maps name of field returned by search engine into name of asset to use + * on storing field's value in context of related match. + * + * This mapping relies on runtime configuration. Mapping is defined per + * service in + * + * @param string $fieldName + * @return string + */ + protected function mapResultFieldToAsset($fieldName) + { + //if ( $this->options->fieldToAsset instanceof Zend_Config ) + //{ + // return $this->options->fieldToAsset->get( $fieldName, $fieldName ); + //} + return $fieldName; + } + + public function getDomain() + { + return 'solr'; + } + + public function createQuery() : SearchParameter + { + return new SearchParameter(); + } + + public function customSearch(SearchParameter $queryParameter) + { + $search = $this->client->createSelect(); + $solariumQuery = $this->applyParametersToSolariumQuery($search, $queryParameter, false); + $searchResult = $this->processQuery($solariumQuery); + return $searchResult; + } + + protected function applyParametersToSolariumQuery(\Solarium\QueryType\Select\Query\Query $query, SearchParameter $parameters = null, $preferOriginalQuery = false) + { + if ($parameters) { + //$subfilters = $parameters->getSubFilters(); + //if ( $subfilters !== null ) { + // foreach ( $subfilters as $name => $subfilter ) { + // if ( $subfilter instanceof Opus_Search_Solr_Filter_Raw || $subfilter instanceof Opus_Search_Solr_Solarium_Filter_Complex ) { + // $query->createFilterQuery( $name ) + // ->setQuery( $subfilter->compile( $query ) ); + // } + // } + //} + + // $filter = $parameters->getFilter();//"aa" + // if ( $filter instanceof Opus_Search_Solr_Filter_Raw || $filter instanceof Opus_Search_Solr_Solarium_Filter_Complex ) { + // if ( !$query->getQuery() || !$preferOriginalQuery ) { + // $compiled = $filter->compile( $query ); + // if ( $compiled !== null ) { + // // compile() hasn't implicitly assigned query before + // $query->setQuery( $compiled ); + // } + // } + // } + + $filter = $parameters->getFilter();//"aa" all: '*:*' + if ($filter !== null) { + //$query->setStart( intval( $start ) ); + //$query->setQuery('%P1%', array($filter)); + $query->setQuery($filter); + } + + + $start = $parameters->getStart(); + if ($start !== null) { + $query->setStart(intval($start)); + } + + $rows = $parameters->getRows(); + if ($rows !== null) { + $query->setRows(intval($rows)); + } + + $union = $parameters->getUnion(); + if ($union !== null) { + $query->setQueryDefaultOperator($union ? 'OR' : 'AND'); + } + + $fields = $parameters->getFields(); + if ($fields !== null) { + $query->setFields($fields); + } + + $sortings = $parameters->getSort(); + if ($sortings !== null) { + $query->setSorts($sortings); + } + + $facet = $parameters->getFacet(); + if ($facet !== null) { + $facetSet = $query->getFacetSet(); + foreach ($facet->getFields() as $field) { + $facetSet->createFacetField($field->getName()) + ->setField($field->getName()) + ->setMinCount($field->getMinCount()) + ->setLimit($field->getLimit()) + ->setSort($field->getSort() ? 'index' : null); + } + if ($facet->isFacetOnly()) { + $query->setFields(array()); + } + } + } + return $query; + } + + protected function execute($query, $actionText) + { + $result = null; + try { + $result = $this->client->execute($query); + } catch (\Solarium\Exception\HttpException $e) { + sprintf('%s: %d %s', $actionText, $e->getCode(), $e->getStatusMessage()); + } finally { + return $result; + } + + // if ( $result->getStatus() ) { + // throw new Opus_Search_Exception( $actionText, $result->getStatus() ); + // } + } + + protected function processQuery(\Solarium\QueryType\Select\Query\Query $query) : SearchResult + { + // send search query to service + $request = $this->execute($query, 'failed querying search engine'); + + //$count = $request->getDocuments(); + // create result descriptor + $result = SearchResult::create() + ->setAllMatchesCount($request->getNumFound()) + ->setQueryTime($request->getQueryTime()); + + // add description on every returned match + $excluded = 0; + foreach ($request->getDocuments() as $document) { + /** @var \Solarium\QueryType\Select\Result\Document $document */ + $fields = $document->getFields(); + + if (array_key_exists('id', $fields)) { + $match = $result->addMatch($fields['id']); + + foreach ($fields as $fieldName => $fieldValue) { + switch ($fieldName) { + case 'id': + break; + + case 'score': + $match->setScore($fieldValue); + break; + + case 'server_date_modified': + $match->setServerDateModified($fieldValue); + break; + + case 'fulltext_id_success': + $match->setFulltextIDsSuccess($fieldValue); + break; + + case 'fulltext_id_failure': + $match->setFulltextIDsFailure($fieldValue); + break; + + default: + $match->setAsset($fieldName, $fieldValue); + //$match->setAsset( $this->mapResultFieldToAsset( $fieldName ), $fieldValue ); + break; + } + } + } else { + $excluded++; + } + } + + if ($excluded > 0) { + Log::warning(sprintf( + 'search yielded %d matches not available in result set for missing ID of related document', + $excluded + )); + } + + return $result; + } +} diff --git a/app/Library/Util/QueryBuilder.php b/app/Library/Util/QueryBuilder.php new file mode 100644 index 0000000..00e18eb --- /dev/null +++ b/app/Library/Util/QueryBuilder.php @@ -0,0 +1,257 @@ +_filterFields = array(); + + // $filters = Opus_Search_Config::getFacetFields(); + // if ( !count( $filters ) ) { + // $this->_logger->debug( 'key searchengine.solr.facets is not present in config. skipping filter queries' ); + // } else { + // $this->_logger->debug( 'searchengine.solr.facets is set to ' . implode( ',', $filters ) ); + // } + + // foreach ($filters as $filterfield) { + // if ($filterfield == 'year_inverted') { + // $filterfield = 'year'; + // } + // array_push($this->_filterFields, trim($filterfield)); + // } + + $this->_searchFields = array('author', 'title', 'persons', 'referee', 'abstract', 'fulltext', 'year'); + $this->_export = $export; + } + + /** + * + * @param $request + * @return array + */ + public function createQueryBuilderInputFromRequest($request) : array + { + if (is_null($request->all())) { + throw new Application_Util_QueryBuilderException('Unable to read request data.Search cannot be performed.'); + } + + if (is_null($request->input('searchtype'))) { + throw new Application_Util_QueryBuilderException('Unspecified search type: unable to create query.'); + } + + if (!Searchtypes::isSupported($request->input('searchtype'))) { + throw new Application_Util_QueryBuilderException( + 'Unsupported search type ' . $request->input('searchtype') . ' : unable to create query.' + ); + } + + $this->validateParamsType($request); + + if ($request->input('sortfield')) { + $sorting = array($request->input('sortfield'), 'asc'); + } else { + //$sorting = Opus_Search_Query::getDefaultSorting(); + $sorting = array('score', 'desc' ); + } + + $input = array( + 'searchtype' => $request->input('searchtype'), + 'start' => $request->input('start'),//, Opus_Search_Query::getDefaultStart()), + 'rows' => $request->input('rows'),// Opus_Search_Query::getDefaultRows()), + 'sortField' => $sorting[0], + 'sortOrder' => $request->input('sortorder', $sorting[1]), + 'docId' => $request->input('docId'), + 'query' => $request->input('query', '*:*') + ); + + //if ($this->_export) { + // $maxRows = self::MAX_ROWS; + // // pagination within export was introduced in OPUS 4.2.2 + // $startParam = $request->input('start', 0); + // $rowsParam = $request->input('rows', $maxRows); + // $start = intval($startParam); + // $rows = intval($rowsParam); + // $input['start'] = $start > 0 ? $start : 0; + // $input['rows'] = $rows > 0 || ($rows == 0 && $rowsParam == '0') ? $rows : $maxRows; + // if ($input['start'] > $maxRows) { + // $input['start'] = $maxRows; + // } + // if ($input['rows'] + $input['start'] > $maxRows) { + // $input['rows'] = $maxRows - $start; + // } + //} + + foreach ($this->_searchFields as $searchField) { + $input[$searchField] = $request->input($searchField, ''); + $input[$searchField . 'modifier'] = $request->input( + $searchField . 'modifier', + self::SEARCH_MODIFIER_CONTAINS_ALL + ); + } + + // foreach ($this->_filterFields as $filterField) { + // $param = $filterField . 'fq'; + // $input[$param] = $request->getParam($param, ''); + // } + + + // if ($request->getParam('searchtype') === Searchtypes::COLLECTION_SEARCH + // || $request->input('searchtype') === Searchtypes::SERIES_SEARCH) + // { + // $searchParams = new Application_Util_BrowsingParams($request, $this->_logger); + // switch ($request->input('searchtype')) { + // case Searchtypes::COLLECTION_SEARCH: + // $input['collectionId'] = $searchParams->getCollectionId(); + // break; + // case Searchtypes::SERIES_SEARCH: + // $input['seriesId'] = $searchParams->getSeriesId(); + // break; + // } + // } + + return $input; + } + + /** + * Checks if all given parameters are of type string. Otherwise, throws Application_Util_QueryBuilderException. + * + * @throws //Application_Util_QueryBuilderException + */ + private function validateParamsType($request) + { + $paramNames = array( + 'searchtype', + 'start', + 'rows', + 'sortField', + 'sortOrder', + 'search', + 'collectionId', + 'seriesId' + ); + foreach ($this->_searchFields as $searchField) { + array_push($paramNames, $searchField, $searchField . 'modifier'); + } + foreach ($this->_filterFields as $filterField) { + array_push($paramNames, $filterField . 'fq'); + } + + foreach ($paramNames as $paramName) { + $paramValue = $request->input($paramName, null); + if (!is_null($paramValue) && !is_string($paramValue)) { + throw new Application_Util_QueryBuilderException('Parameter ' . $paramName . ' is not of type string'); + } + } + } + + /** + * + * @param array $input + * @return SolrSearchQuery + */ + public function createSearchQuery($input) : SolrSearchQuery + { + if ($input['searchtype'] === Searchtypes::SIMPLE_SEARCH) { + return $this->createSimpleSearchQuery($input); + //return $this->createAllSearchQuery($input); + } + + if ($input['searchtype'] === Searchtypes::ALL_SEARCH) { + return $this->createAllSearchQuery($input); + } + return $this->createSimpleSearchQuery($input); + } + + // private function createIdSearchQuery($input) { + // $this->_logger->debug("Constructing query for id search."); + + // if (is_null($input['docId'])) { + // throw new Application_Exception("No id provided.", 404); + // } + + // $query = new Opus_SolrSearch_Query(Opus_SolrSearch_Query::DOC_ID); + // $query->setField('id', $input['docId']); + + // if ($this->_export) { + // $query->setReturnIdsOnly(true); + // } + + // $this->_logger->debug("Query $query complete"); + // return $query; + // } + + private function createAllSearchQuery($input) + { + //$this->_logger->debug("Constructing query for all search."); + + $query = new SolrSearchQuery(SolrSearchQuery::ALL_DOCS); + $query->setStart("0");//$input['start']); + //$query->setRows($input['rows']); + $query->setRows("10"); + $query->setSortField($input['sortField']); + $query->setSortOrder($input['sortOrder']); + + //$this->addFiltersToQuery($query, $input); + + //if ($this->_export) { + // $query->setReturnIdsOnly(true); + //} + + //$this->_logger->debug("Query $query complete"); + return $query; + } + + private function createSimpleSearchQuery($input) : SolrSearchQuery + { + // $this->_logger->debug("Constructing query for simple search."); + + $solrQuery = new SolrSearchQuery(SolrSearchQuery::SIMPLE); + $solrQuery->setStart($input['start']); + $solrQuery->setRows("10");//$input['rows']); + $solrQuery->setSortField($input['sortField']); + $solrQuery->setSortOrder($input['sortOrder']); + + $solrQuery->setCatchAll($input['query']); + //$this->addFiltersToQuery($solrQuery, $input); + + // if ($this->_export) { + // $solrQuery->setReturnIdsOnly(true); + // } + + // $this->_logger->debug("Query $solrQuery complete"); + return $solrQuery; + } + + private function addFiltersToQuery($query, $input) + { + foreach ($this->_filterFields as $filterField) { + $facetKey = $filterField . 'fq'; + $facetValue = $input[$facetKey]; + if ($facetValue !== '') { + $this->_logger->debug( + "request has facet key: $facetKey - value is: $facetValue - corresponding facet is: $filterField" + ); + $query->addFilterQuery($filterField, $facetValue); + } + } + } +} diff --git a/app/Library/Util/SearchParameter.php b/app/Library/Util/SearchParameter.php new file mode 100644 index 0000000..15946e7 --- /dev/null +++ b/app/Library/Util/SearchParameter.php @@ -0,0 +1,452 @@ + Opus + * "request" --> "query" + * "query" --> "filter" + * "filter query" --> "subfilter" + * + * @method int getStart( int $default = null ) + * @method int getRows( int $default = null ) + * @method string[] getFields( array $default = null ) + * @method array getSort( array $default = null ) + * @method bool getUnion( bool $default = null ) + * @method Opus_Search_Filter_Base getFilter( Opus_Search_Filter_Base $default = null ) + * @method Opus_Search_Facet_Set getFacet( Opus_Search_Facet_Set $default = null ) + * @method $this setStart( int $offset ) + * @method $this setRows( int $count ) + * @method $this setFields( $fields ) + * @method $this setSort( $sorting ) + * @method $this setUnion( bool $isUnion ) + * @method $this setFilter( Opus_Search_Filter_Base $filter ) assigns condition to be met by resulting documents + * @method $this setFacet( Opus_Search_Facet_Set $facet ) + * @method $this addFields( string $fields ) + * @method $this addSort( $sorting ) + */ +class SearchParameter +{ + protected $_data; + + public function reset() + { + $this->_data = array( + 'start' => null, + 'rows' => null, + 'fields' => null, + 'sort' => null, + 'union' => null, + 'filter' => null, + 'facet' => null, + 'subfilters' => null, + ); + } + + public function __construct() + { + $this->reset(); + } + + /** + * Tests if provided name is actually name of known parameter normalizing it + * on return. + * + * @throws InvalidArgumentException unless providing name of existing parameter + * @param string $name name of parameter to access + * @return string normalized name of existing parameter + */ + protected function isValidParameter($name) + { + if (!array_key_exists(strtolower(trim($name)), $this->_data)) { + throw new InvalidArgumentException('invalid query parameter: ' . $name); + } + + return strtolower(trim($name)); + } + + /** + * Normalizes one or more field names or set of comma-separated field names + * into set of field names. + * + * @param string|string[] $input one or more field names or comma-separated lists of fields' names + * @return string[] list of field names + */ + protected function normalizeFields($input) + { + if (!is_array($input)) { + $input = array($input); + } + $output = array(); + + foreach ($input as $field) { + if (!is_string($field)) { + throw new InvalidArgumentException('invalid type of field selector'); + } + + $fieldNames = preg_split('/[\s,]+/', $field, null, PREG_SPLIT_NO_EMPTY); + foreach ($fieldNames as $name) { + if (!preg_match('/^(?:\*|[a-z_][a-z0-9_]*)$/i', $name)) { + throw new InvalidArgumentException('malformed field selector: ' . $name); + } + $output[] = $name; + } + } + + if (!count($input)) { + throw new InvalidArgumentException('missing field selector'); + } + return $output; + } + + /** + * Parses provided parameter for describing some sorting direction. + * + * @param string|bool $ascending one out of true, false, "asc" or "desc" + * @return bool true if parameter is considered requesting to sort in ascending order + */ + protected function normalizeDirection($ascending) + { + if (!strcasecmp($ascending, 'asc')) { + $ascending = true; + } elseif (!strcasecmp($ascending, 'desc')) { + $ascending = false; + } elseif ($ascending !== false && $ascending !== true) { + throw new InvalidArgumentException('invalid sorting direction selector'); + } + return $ascending; + } + + /** + * Retrieves value of selected query parameter. + * + * @param string $name name of parameter to read + * @param mixed $defaultValue value to retrieve if parameter hasn't been set internally + * @return mixed value of selected parameter, default if missing internally + */ + public function get($name, $defaultValue = null) + { + $name = $this->isValidParameter($name); + + return is_null($this->_data[$name]) ? $defaultValue : $this->_data[$name]; + } + + /** + * Sets value of selected query parameter. + * + * @throws InvalidArgumentException in case of invalid arguments (e.g. on trying to add value to single-value param) + * @param string $name name of query parameter to adjust + * @param string[]|array|string|int $value value of query parameter to write + * @param bool $adding true for adding given parameter to any existing one + * @return $this + */ + public function set($name, $value, $adding = false) //filter, "aa", false + { + $name = $this->isValidParameter($name); + + switch ($name) { + case 'start': + case 'rows': + if ($adding) { + throw new InvalidArgumentException('invalid parameter access on ' . $name); + } + + if (!is_scalar($value) || !ctype_digit(trim($value))) { + throw new InvalidArgumentException('invalid parameter value on ' . $name); + } + + $this->_data[$name] = intval($value); + break; + + case 'fields': + $fields = $this->normalizeFields($value); + + if ($adding && is_null($this->_data['fields'])) { + $adding = false; + } + + if ($adding) { + $this->_data['fields'] = array_merge($this->_data['fields'], $fields); + } else { + if (!count($fields)) { + throw new InvalidArgumentException('setting empty set of fields rejected'); + } + $this->_data['fields'] = $fields; + } + + $this->_data['fields'] = array_unique($this->_data['fields']); + break; + + case 'sort': + if (!is_array($value)) { + $value = array($value, true); + } + + switch (count($value)) { + case 2: + $fields = array_shift($value); + $ascending = array_shift($value); + break; + case 1: + $fields = array_shift($value); + $ascending = true; + break; + default: + throw new InvalidArgumentException('invalid sorting selector'); + } + + $this->addSorting($fields, $ascending, !$adding); + break; + + case 'union': + if ($adding) { + throw new InvalidArgumentException('invalid parameter access on ' . $name); + } + $this->_data[$name] = !!$value; + break; + + case 'filter': + if ($adding) { + throw new InvalidArgumentException('invalid parameter access on ' . $name); + } + + // if ( !( $value instanceof Opus_Search_Filter_Base ) ) { + // throw new InvalidArgumentException( 'invalid filter' ); + // } + + $this->_data[$name] = $value; + break; + + case 'facet': + if ($adding) { + throw new InvalidArgumentException('invalid parameter access on ' . $name); + } + + if (!($value instanceof Opus_Search_Facet_Set)) { + throw new InvalidArgumentException('invalid facet options'); + } + $this->_data[$name] = $value; + break; + + case 'subfilters': + throw new RuntimeException('invalid access on sub filters'); + } + + return $this; + } + + public function __get($name) + { + return $this->get($name); + } + + public function __isset($name) + { + return !is_null($this->get($name)); + } + + public function __set($name, $value) + { + $this->set($name, $value, false); + } + + public function __call($method, $arguments) + { + if (preg_match('/^(get|set|add)([a-z]+)$/i', $method, $matches)) { + $property = $this->isValidParameter($matches[2]); + switch (strtolower($matches[1])) { + case 'get': + return $this->get($property, @$arguments[0]); + + case 'set': + $this->set($property, @$arguments[0], false); + return $this; + + case 'add': + $this->set($property, @$arguments[0], true); + return $this; + } + } + throw new RuntimeException('invalid method: ' . $method); + } + + /** + * Adds request for sorting by some field in desired order. + * + * @param string|string[] $field one or more field names to add sorting (as array and/or comma-separated string) + * @param bool $ascending true or "asc" for ascending by all given fields + * @param bool $reset true for dropping previously declared sorting + * @return $this fluent interface + */ + public function addSorting($field, $ascending = true, $reset = false) + { + $fields = $this->normalizeFields($field); + $ascending = $this->normalizeDirection($ascending); + + if (!count($fields)) { + throw new InvalidArgumentException('missing field for sorting result'); + } + + if ($reset || !is_array($this->_data['sort'])) { + $this->_data['sort'] = array(); + } + + foreach ($fields as $field) { + if ($field === '*') { + throw new InvalidArgumentException('invalid request for sorting by all fields (*)'); + } + $this->_data['sort'][$field] = $ascending ? 'asc' : 'desc'; + } + return $this; + } + + /** + * Declares some subfilter. + * + * @note In Solr a search includes a "query" and optionally one or more + * "filter query". This API intends different terminology for the + * whole search request is considered a "query" with a "filter" used + * to select actually desired documents by matching conditions. In + * context with this terminology "subfilter" was used to describe what + * is "filter query" in Solr world: some named query to be included on + * selecting documents in database with some benefits regarding + * performance, server-side result caching and non-affecting score. + * + * @see http://wiki.apache.org/solr/CommonQueryParameters#fq + * + * @param string $name name of query (used for server-side caching) + * @param Opus_Search_Filter_Base $subFilter filter to be satisfied by all matching documents in addition + * @return $this fluent interface + */ + public function setSubFilter($name, Opus_Search_Filter_Base $subFilter) + { + if (!is_string($name) || !$name) { + throw new InvalidArgumentException('invalid sub filter name'); + } + + if (!is_array($this->_data['subfilters'])) { + $this->_data['subfilters'] = array($name => $subFilter); + } else { + $this->_data['subfilters'][$name] = $subFilter; + } + return $this; + } + + /** + * Removes some previously defined subfilter from current query again. + * + * @note This isn't affecting server-side caching of selected filter but + * reverting some parts of query compiled on client-side. + * + * @see Opus_Search_Query::setSubFilter() + * + * @param string $name name of filter to remove from query again + * @return $this fluent interface + */ + public function removeSubFilter($name) + { + if (!is_string($name) || !$name) { + throw new InvalidArgumentException('invalid sub filter name'); + } + + if (is_array($this->_data['subfilters'])) { + if (array_key_exists($name, $this->_data['subfilters'])) { + unset($this->_data['subfilters'][$name]); + } + if (!count($this->_data['subfilters'])) { + $this->_data['subfilters'] = null; + } + } + + return $this; + } + + /** + * Retrieves named map of subfilters to include on querying search engine. + * + * @return Opus_Search_Filter_Base[] + */ + public function getSubFilters() + { + return $this->_data['subfilters']; + } + + public static function getParameterDefault($name, $fallbackIfMissing, $oldName = null) + { + $config = Opus_Search_Config::getDomainConfiguration(); + $defaults = $config->parameterDefaults; + + if ($defaults instanceof Zend_Config) { + return $defaults->get($name, $fallbackIfMissing); + } + if ($oldName) { + return $config->get($oldName, $fallbackIfMissing); + } + + return $fallbackIfMissing; + } + + /** + * Retrieves configured default offset for paging results. + * + * @return int + */ + public static function getDefaultStart() + { + return static::getParameterDefault('start', 0); + } + + /** + * Retrieves configured default number of rows to show (per page). + * + * @return int + */ + public static function getDefaultRows() + { + return static::getParameterDefault('rows', 10, 'numberOfDefaultSearchResults'); + } + + /** + * Retrieves configured default sorting. + * + * @return string[] + */ + public static function getDefaultSorting() + { + $sorting = static::getParameterDefault('sortField', 'score desc'); + + $parts = preg_split('/[\s,]+/', trim($sorting), null, PREG_SPLIT_NO_EMPTY); + + $sorting = array(array_shift($parts)); + + if (!count($parts)) { + $sorting[] = 'desc'; + } else { + $dir = array_shift($parts); + if (strcasecmp($dir, 'asc') || strcasecmp($dir, 'desc')) { + $dir = 'desc'; + } + $sorting[] = strtolower($dir); + } + return $sorting; + } + + /** + * Retrieves configured name of field to use for sorting results by default. + * + * @return string + */ + public static function getDefaultSortingField() + { + $sorting = static::getDefaultSorting(); + return $sorting[0]; + } +} diff --git a/app/Library/Util/SearchResultMatch.php b/app/Library/Util/SearchResultMatch.php new file mode 100644 index 0000000..581da6e --- /dev/null +++ b/app/Library/Util/SearchResultMatch.php @@ -0,0 +1,290 @@ +id = $matchId; + } + + public static function create($matchId) + { + return new static($matchId); + } + + /** + * Retrieves ID of document matching related search query. + * + * @return mixed + */ + public function getId() + { + return $this->id; + } + + /** + * Retrieves instance of Opus_Document related to current match. + * + * @throws Opus_Model_NotFoundException + * @return Opus_Document + */ + public function getDocument() + { + if (is_null($this->doc)) { + $this->doc = new Opus_Document($this->id); + } + return $this->doc; + } + + /** + * Assigns score of match in context of related search. + * + * @param $score + * @return $this + */ + public function setScore($score) + { + if (!is_null($this->score)) { + throw new RuntimeException('score has been set before'); + } + $this->score = floatval($score); + return $this; + } + + /** + * Retrieves score of match in context of related search. + * + * @return float|null null if score was not set + */ + public function getScore() + { + return $this->score; + } + + /** + * Retrieves matching document's number in series selected by its ID. + * + * This method is provided for downward compatibility. You are advised to + * inspect document's model for this locally available information rather + * than relying on search engine returning it. + * + * @deprecated + * @return string + */ + public function getSeriesNumber($seriesId) + { + if (!$seriesId) { + return null; + } + + if (!is_array($this->seriesNumbers)) { + $this->seriesNumbers = array(); + + foreach ($this->getDocument()->getSeries() as $linkedSeries) { + $id = $linkedSeries->getModel()->getId(); + $number = $linkedSeries->getNumber(); + + $this->seriesNumbers[$id] = $number; + } + } + + return array_key_exists($seriesId, $this->seriesNumbers) ? $this->seriesNumbers[$seriesId] : null; + } + + /** + * Assigns timestamp of last modification to document as tracked in search + * index. + * + * @note This information is temporarily overloading related timestamp in + * local document. + * + * @param {int} $timestamp Unix timestamp of last modification tracked in search index + * @return $this fluent interface + */ + public function setServerDateModified($timestamp) + { + if (!is_null($this->serverDateModified)) { + throw new RuntimeException('timestamp of modification has been set before'); + } + + //$this->serverDateModified = new Opus_Date(); + //$this->serverDateModified = Carbon::createFromTimestamp($timestamp); + $this->serverDateModified = Carbon::createFromTimestamp($timestamp)->toDateTimeString(); + + // if ( ctype_digit( $timestamp = trim( $timestamp ) ) ) { + // $this->serverDateModified->setUnixTimestamp( intval( $timestamp ) ); + // } else { + // $this->serverDateModified->setFromString( $timestamp ); + // } + + return $this; + } + + /** + * Provides timestamp of last modification preferring value provided by + * search engine over value stored locally in document. + * + * @note This method is used by Opus to detect outdated records in search + * index. + * + * @return string //old Opusdate + */ + public function getServerDateModified() + { + if (!is_null($this->serverDateModified)) { + return $this->serverDateModified; + } + + return $this->getDocument()->getServerDateModified(); + } + + public function setFulltextIDsSuccess($value) + { + if (!is_null($this->fulltextIdSuccess)) { + throw new RuntimeException('successful fulltext IDs have been set before'); + } + $this->fulltextIdSuccess = $value; + + return $this; + } + + public function getFulltextIDsSuccess() + { + if (!is_null($this->fulltextIdSuccess)) { + return $this->fulltextIdSuccess; + } + return null; + } + + public function setFulltextIDsFailure($value) + { + if (!is_null($this->fulltextIdFailure)) { + throw new RuntimeException('failed fulltext IDs have been set before'); + } + $this->fulltextIdFailure = $value; + return $this; + } + + public function getFulltextIDsFailure() + { + if (!is_null($this->fulltextIdFailure)) { + return $this->fulltextIdFailure; + } + return null; + } + + /** + * Passes all unknown method invocations to related instance of + * Opus_Document. + * + * @param string $method name of locally missing/protected method + * @param mixed[] $args arguments used on invoking that method + * @return mixed + */ + public function __call($method, $args) + { + return call_user_func_array(array($this->getDocument(), $method), $args); + } + + /** + * Passes access on locally missing/protected property to related instance + * of Opus_Document. + * + * @param string $name name of locally missing/protected property + * @return mixed value of property + */ + public function __get($name) + { + return $this->getDocument()->{$name}; + } + + /** + * Attaches named asset to current match. + * + * Assets are additional information on match provided by search engine. + * + * @param string $name + * @param mixed $value + * @return $this fluent interface + */ + public function setAsset($name, $value) + { + $this->data[$name] = $value; + return $this; + } + + /** + * Retrieves selected asset attached to current match or null if asset was + * not assigned to match. + * + * @param string $name + * @return mixed|null + */ + public function getAsset($name) + { + return isset($this->data[$name]) ? $this->data[$name] : null; + } + + /** + * Tests if selected asset has been attached to current match. + * + * @param string $name name of asset to test + * @return bool true if asset was assigned to current match + */ + public function hasAsset($name) : bool + { + return array_key_exists($name, $this->data); + } +} diff --git a/app/Library/Util/Searchtypes.php b/app/Library/Util/Searchtypes.php new file mode 100644 index 0000000..1bf6fb5 --- /dev/null +++ b/app/Library/Util/Searchtypes.php @@ -0,0 +1,30 @@ +invalidQCache(); + $this->q = null; + + if ($searchType === self::SIMPLE || $searchType === self::ADVANCED || $searchType === self::ALL_DOCS) { + $this->searchType = $searchType; + return; + } + + if ($searchType === self::FACET_ONLY) { + $this->searchType = self::FACET_ONLY; + $this->setRows(0); + return; + } + + if ($searchType === self::LATEST_DOCS) { + $this->searchType = self::LATEST_DOCS; + $this->sortField = 'server_date_published'; + $this->sortOrder = 'desc'; + return; + } + + if ($searchType === self::DOC_ID) { + $this->searchType = self::DOC_ID; + return; + } + } + + public function getSearchType() + { + return $this->searchType; + } + + public function getFacetField() + { + return $this->facetField; + } + + public function setFacetField($facetField) + { + $this->facetField = $facetField; + } + + public function getStart() + { + return $this->start; + } + + public function setStart($start) + { + $this->start = $start; + } + + public static function getDefaultRows() + { + return SolrSearchQuery::getDefaultRows(); + } + + public function getRows() + { + return $this->rows; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getSortField() + { + return $this->sortField; + } + + public function setSortField($sortField) + { + if ($sortField === self::DEFAULT_SORTFIELD) { + if ($this->searchType === self::ALL_DOCS) { + // change the default sortfield for searchtype all + // since sorting by relevance does not make any sense here + $this->sortField = 'server_date_published'; + } else { + $this->sortField = self::DEFAULT_SORTFIELD; + } + return; + } + $this->sortField = $sortField; + if (strpos($sortField, 'doc_sort_order_for_seriesid_') !== 0 && strpos($sortField, 'server_date_published') !== 0) { + // add _sort to the end of $sortField if not already done + $suffix = '_sort'; + if (substr($sortField, strlen($sortField) - strlen($suffix)) !== $suffix) { + $this->sortField .= $suffix; + } + } + } + + public function getSortOrder() + { + return $this->sortOrder; + } + + public function setSortOrder($sortOrder) + { + $this->sortOrder = $sortOrder; + } + + public function getSeriesId() + { + return $this->seriesId; + } + + /** + * + * @return array An array that contains all specified filter queries. + */ + public function getFilterQueries() + { + return $this->filterQueries; + } + + /** + * + * @param string $filterField The field that should be used in a filter query. + * @param string $filterValue The field value that should be used in a filter query. + */ + public function addFilterQuery($filterField, $filterValue) + { + if ($filterField == 'has_fulltext') { + $filterQuery = $filterField . ':' . $filterValue; + } else { + $filterQuery = '{!raw f=' . $filterField . '}' . $filterValue; + } + array_push($this->filterQueries, $filterQuery); + + // we need to store the ID of the requested series here, + // since we need it later to build the index field name + if ($filterField === 'series_ids') { + $this->seriesId = $filterValue; + } + } + + /** + * + * @param array $filterQueries An array of queries that should be used as filter queries. + */ + public function setFilterQueries($filterQueries) + { + $this->filterQueries = $filterQueries; + } + + public function getCatchAll() + { + return $this->catchAll; + } + + public function setCatchAll($catchAll) + { + $this->catchAll = $catchAll; + $this->invalidQCache(); + } + + /** + * + * @param string $name + * @param string $value + * @param string $modifier + */ + public function setField($name, $value, $modifier = self::SEARCH_MODIFIER_CONTAINS_ALL) + { + if (!empty($value)) { + $this->fieldValues[$name] = $value; + $this->modifier[$name] = $modifier; + $this->invalidQCache(); + } + } + + /** + * + * @param string $name + * @return Returns null if no values was specified for the given field name. + */ + public function getField($name) + { + if (array_key_exists($name, $this->fieldValues)) { + return $this->fieldValues[$name]; + } + return null; + } + + /** + * + * @param string $fieldname + * @return returns null if no modifier was specified for the given field name. + */ + public function getModifier($fieldname) + { + if (array_key_exists($fieldname, $this->modifier)) { + return $this->modifier[$fieldname]; + } + return null; + } + + public function getQ() + { + if (is_null($this->q)) { + // earlier cached query was marked as invalid: perform new setup of query cache + $this->q = $this->setupQCache(); + } + + // return cached result (caching is done here since building q is an expensive operation) + return $this->q; + } + + private function setupQCache() + { + if ($this->searchType === self::SIMPLE) { + if ($this->getCatchAll() === '*:*') { + return $this->catchAll; + } + return $this->escape($this->getCatchAll()); + } + if ($this->searchType === self::FACET_ONLY || $this->searchType === self::LATEST_DOCS || $this->searchType === self::ALL_DOCS) { + return '*:*'; + } + if ($this->searchType === self::DOC_ID) { + return 'id:' . $this->fieldValues['id']; + } + return $this->buildAdvancedQString(); + } + + private function invalidQCache() + { + $this->q = null; + } + + private function buildAdvancedQString() + { + $q = "{!lucene q.op=AND}"; + $first = true; + foreach ($this->fieldValues as $fieldname => $fieldvalue) { + if ($first) { + $first = false; + } else { + $q .= ' '; + } + + if ($this->modifier[$fieldname] === self::SEARCH_MODIFIER_CONTAINS_ANY) { + $q .= $this->combineSearchTerms($fieldname, $fieldvalue, 'OR'); + continue; + } + + if ($this->modifier[$fieldname] === self::SEARCH_MODIFIER_CONTAINS_NONE) { + $q .= '-' . $this->combineSearchTerms($fieldname, $fieldvalue, 'OR'); + continue; + } + + // self::SEARCH_MODIFIER_CONTAINS_ALL + $q .= $this->combineSearchTerms($fieldname, $fieldvalue); + } + return $q; + } + + private function combineSearchTerms($fieldname, $fieldvalue, $conjunction = null) + { + $result = $fieldname . ':('; + $firstTerm = true; + $queryTerms = preg_split("/[\s]+/", $this->escape($fieldvalue), null, PREG_SPLIT_NO_EMPTY); + foreach ($queryTerms as $queryTerm) { + if ($firstTerm) { + $firstTerm = false; + } else { + $result .= is_null($conjunction) ? " " : " $conjunction "; + } + $result .= $queryTerm; + } + $result .= ')'; + return $result; + } + + public function disableEscaping() + { + $this->invalidQCache(); + $this->escapingEnabled = false; + } + + /** + * Escape Lucene's special query characters specified in + * http://lucene.apache.org/java/3_0_2/queryparsersyntax.html#Escaping%20Special%20Characters + * Escaping currently ignores * and ? which are used as wildcard operators. + * Additionally, double-quotes are not escaped and a double-quote is added to + * the end of $query in case it contains an odd number of double-quotes. + * @param string $query The query which needs to be escaped. + */ + private function escape($query) + { + if (!$this->escapingEnabled) { + return $query; + } + $query = trim($query); + // add one " to the end of $query if it contains an odd number of " + if (substr_count($query, '"') % 2 == 1) { + $query .= '"'; + } + // escape special characters (currently ignore " \* \?) outside of "" + $insidePhrase = false; + $result = ''; + foreach (explode('"', $query) as $phrase) { + if ($insidePhrase) { + $result .= '"' . $phrase . '"'; + } else { + $result .= preg_replace( + '/(\+|-|&&|\|\||!|\(|\)|\{|}|\[|]|\^|~|:|\\\)/', + '\\\$1', + $this->lowercaseWildcardQuery($phrase) + ); + } + $insidePhrase = !$insidePhrase; + } + return $result; + } + + private function lowercaseWildcardQuery($query) + { + // check if $query is a wildcard query + if (strpos($query, '*') === false && strpos($query, '?') === false) { + return $query; + } + // lowercase query + return strtolower($query); + } + + public function __toString() + { + if ($this->searchType === self::SIMPLE) { + return 'simple search with query ' . $this->getQ(); + } + if ($this->searchType === self::FACET_ONLY) { + return 'facet only search with query *:*'; + } + if ($this->searchType === self::LATEST_DOCS) { + return 'search for latest documents with query *:*'; + } + if ($this->searchType === self::ALL_DOCS) { + return 'search for all documents'; + } + if ($this->searchType === self::DOC_ID) { + return 'search for document id ' . $this->getQ(); + } + return 'advanced search with query ' . $this->getQ(); + } + + /** + * + * @param boolean $returnIdsOnly + */ + public function setReturnIdsOnly($returnIdsOnly) + { + $this->returnIdsOnly = $returnIdsOnly; + } + + /** + * @return boolean + */ + public function isReturnIdsOnly() + { + return $this->returnIdsOnly; + } +} diff --git a/app/Library/Util/SolrSearchSearcher.php b/app/Library/Util/SolrSearchSearcher.php new file mode 100644 index 0000000..1e260fa --- /dev/null +++ b/app/Library/Util/SolrSearchSearcher.php @@ -0,0 +1,94 @@ +debug("query: " . $query->getQ()); + + // get service adapter for searching + // $service = SearchService::selectSearchingService( null, 'solr' ); + $service = new SolariumAdapter("solr", config('solarium')); + + $filterText = $query->getQ();//"*:*" + // basically create query + $requestParameter = $service->createQuery() + ->setFilter($filterText) + ->setStart($query->getStart()) + ->setRows($query->getRows()); + //start:0 + // rows:1 + // fields:null + // sort:null + // union:null + // filter:"aa" + // facet:null + // subfilters:null + + $requestParameter->setFields(array('*', 'score')); + + $searchResult = $service->customSearch($requestParameter); + + //if ( $validateDocIds ) + //{ + // $searchResult->dropLocallyMissingMatches(); + //} + + return $searchResult; + } catch (Exception $e) { + return $this->mapException(null, $e); + } + // catch ( Opus_Search_InvalidServiceException $e ) { + // return $this->mapException( Opus_SolrSearch_Exception::SERVER_UNREACHABLE, $e ); + // } + // catch( Opus_Search_InvalidQueryException $e ) { + // return $this->mapException( Opus_SolrSearch_Exception::INVALID_QUERY, $e ); + // } + } + + /** + * @param mixed $type + * @param //Exception $previousException + * @throws //Opus_SolrSearch_Exception + * @return no-return + */ + private function mapException($type, Exception $previousException) + { + $msg = 'Solr server responds with an error ' . $previousException->getMessage(); + //Opus_Log::get()->err($msg); + Log::error($msg); + + //throw new Opus_SolrSearch_Exception($msg, $type, $previousException); + } + + public function setFacetArray($array) + { + $this->facetArray = $array; + } +} diff --git a/app/Library/Xml/Conf.php b/app/Library/Xml/Conf.php new file mode 100644 index 0000000..3e873bb --- /dev/null +++ b/app/Library/Xml/Conf.php @@ -0,0 +1,58 @@ + array( + 'model' => 'App\Title', + 'options' => array('type' => 'main'), + 'fetch' => 'eager' + ), + 'TitleAbstract' => array( + 'model' => 'App\Title', + 'options' => array('type' => 'abstract'), + 'fetch' => 'eager' + ), + 'Licence' => array( + 'model' => 'App\License', + 'through' => 'link_documents_licences', + 'relation' => 'licenses', + 'fetch' => 'eager' + ), + 'PersonAuthor' => array( + 'model' => 'App\Person', + 'through' => 'link_documents_persons', + 'pivot' => array('role' => 'author'), + //'sort_order' => array('sort_order' => 'ASC'), // <-- We need a sorted authors list. + //'sort_field' => 'SortOrder', + 'relation' => 'authors', + 'fetch' => 'eager' + ), + 'PersonContributor' => array( + 'model' => 'App\Person', + 'through' => 'link_documents_persons', + 'pivot' => array('role' => 'contributor'), + // 'sort_order' => array('sort_order' => 'ASC'), // <-- We need a sorted authors list. + //'sort_field' => 'SortOrder', + 'relation' => 'contributors', + 'fetch' => 'eager' + ), + 'File' => array( + 'model' => 'App\File', + 'relation' => 'files', + 'fetch' => 'eager' + ), + ); + + + protected $_internalFields = array(); + + protected $_fields = array(); + + protected function _initFields() + { + $fields = array( + "Id", + "CompletedDate", "CompletedYear", + "ContributingCorporation", + "CreatingCorporation", + "ThesisDateAccepted", "ThesisYearAccepted", + "Edition", + "Issue", + "Language", + "PageFirst", "PageLast", "PageNumber", + "PublishedDate", "PublishedYear", + "PublisherName", "PublisherPlace", + "PublicationState", + "ServerDateCreated", + "ServerDateModified", + "ServerDatePublished", + "ServerDateDeleted", + "ServerState", + "Type", + "Volume", + "BelongsToBibliography", + "EmbargoDate" + ); + + foreach ($fields as $fieldname) { + $field = new Field($fieldname); + $this->addField($field); + } + + foreach (array_keys($this->_externalFields) as $fieldname) { + $field = new Field($fieldname); + $field->setMultiplicity('*'); + $this->addField($field); + } + + // Initialize available date fields and set up date validator + // if the particular field is present + $dateFields = array( + 'ServerDateCreated', 'CompletedDate', 'PublishedDate', + 'ServerDateModified', 'ServerDatePublished', 'ServerDateDeleted', 'EmbargoDate' + ); + foreach ($dateFields as $fieldName) { + $this->getField($fieldName) + ->setValueModelClass('Carbon'); + } + + // $this->_fetchValues(); + } + + /** + * Get a list of all fields attached to the model. Filters all fieldnames + * that are defined to be inetrnal in $_internalFields. + * + * @see Opus_Model_Abstract::_internalFields + * @return array List of fields + */ + public function describe() + { + return array_diff(array_keys($this->_fields), $this->_internalFields); + } + + public function addField(Field $field) + { + $fieldname = $field->getName(); + if (isset($fieldname, $this->_externalFields[$fieldname])) { + $options = $this->_externalFields[$fieldname]; + + // set ValueModelClass if a through option is given + if (isset($options['model'])) { + $field->setValueModelClass($options['model']); + } + // set LinkModelClass if a through option is given + //if (isset($options['through'])) + //{ + // $field->setLinkModelClass($options['through']); + //} + } + + $this->_fields[$field->getName()] = $field; + $field->setOwningModelClass(get_class($this)); + return $this; + } + + public function getField($name) + { + return $this->_getField($name); + } + + /** + * Return a reference to an actual field. + * + * @param string $name Name of the requested field. + * @return Field The requested field instance. If no such instance can be found, null is returned. + */ + protected function _getField($name) + { + if (isset($this->_fields[$name])) { + return $this->_fields[$name]; + } else { + return null; + } + } + + public function fetchValues() + { + $this->_initFields(); + foreach ($this->_fields as $fieldname => $field) { + if (isset($this->_externalFields[$fieldname]) === true) { + $fetchmode = 'lazy'; + if (isset($this->_externalFields[$fieldname]['fetch']) === true) { + $fetchmode = $this->_externalFields[$fieldname]['fetch']; + } + + if ($fetchmode === 'lazy') { + // Remember the field to be fetched later. + $this->_pending[] = $fieldname; + // Go to next field + continue; + } else { + // Immediately load external field if fetching mode is set to 'eager' + $this->_loadExternal($fieldname); + } + } else { + // Field is not external an gets handled by simply reading + $property_name = self::convertFieldnameToColumn($fieldname); + //$test = $this->server_date_created; + $fieldval = $this->{$property_name}; + + // explicitly set null if the field represents a model except for dates + if (null !== $field->getValueModelClass()) { + if (true === empty($fieldval)) { + $fieldval = null; + } else { + $fieldval = new \Carbon\Carbon($fieldval); + } + } + + $field->setValue($fieldval); + } + } + } + + public static function convertFieldnameToColumn($fieldname) + { + return strtolower(preg_replace('/(?!^)[[:upper:]]/', '_\0', $fieldname)); + } + + protected function _loadExternal($fieldname) + { + $field = $this->_fields[$fieldname]; + + $modelclass = $field->getLinkModelClass(); + if (!isset($modelclass)) { + // For handling a value model, see 'model' option. + $modelclass = $field->getValueModelClass(); + } + + $tableclass = new $modelclass();//::getTableGatewayClass(); + // $table = Opus_Db_TableGateway::getInstance($tableclass); + $select = $tableclass->query();//->where("document_id", $this->id);; + + // If any declared constraints, add them to query + if (isset($this->_externalFields[$fieldname]['options'])) { + $options = $this->_externalFields[$fieldname]['options']; + foreach ($options as $column => $value) { + $select = $select->where($column, $value); + } + } + + + // Get dependent rows + $result = array(); + $datasetId = $this->id; + + $rows = array(); + if (isset($this->_externalFields[$fieldname]['through'])) { + $relation = $this->_externalFields[$fieldname]['relation']; + //$rows = $select->datasets + ////->orderBy('name') + //->get(); + //$licenses = $select->with('datasets')->get(); + //$rows = $supplier->datasets; + $rows = $this->{$relation}; + //if (isset($this->_externalFields[$fieldname]['pivot'])) + //{ + // $pivArray = $this->_externalFields[$fieldname]['pivot']; + // $rows = $rows->wherePivot('role', $pivArray['role']); + //} + } else { + $rows = $select->whereHas('dataset', function ($q) use ($datasetId) { + $q->where('id', $datasetId); + })->get(); + } + + foreach ($rows as $row) { + // //$newModel = new $modelclass($row); + // $result[] = $row;//->value; + + $attributes = array_keys($row->getAttributes()); + $objArray = []; + foreach ($attributes as $property_name) { + $fieldName = self::convertColumnToFieldname($property_name); + // $field =new Field($fieldName); + $fieldval = $row->{$property_name}; + // $field->setValue($fieldval); + // $this->_mapField($field, $dom, $rootNode); + $objArray[$fieldName] = $fieldval; + } + $result[] = $objArray; + } + + // Set the field value + $field->setValue($result); + } + + //snakeToCamel + public static function convertColumnToFieldname($columnname) + { + //return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $columnname)))); + return str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $columnname))); + } +} diff --git a/app/Library/Xml/Field.php b/app/Library/Xml/Field.php new file mode 100644 index 0000000..198eb27 --- /dev/null +++ b/app/Library/Xml/Field.php @@ -0,0 +1,213 @@ +_name = $name; + } + + /** + * Return the name of model class if the field holds model instances. + * + * @return string Class name or null if the value is not a model. + */ + public function getValueModelClass() + { + return $this->_valueModelClass; + } + + /** + * Set the name of model class if the field holds model instances. + * + * @param string $classname The name of the class that is used as model for this field or null. + * @return Field Fluent interface. + */ + public function setValueModelClass($classname) + { + $this->_valueModelClass = $classname; + return $this; + } + + public function getName() + { + return $this->_name; + } + + /** + * Set the name of the model class that owns the field. + * @param string $classname The name of the class that owns the field. + * @return Field Fluent interface. + */ + public function setOwningModelClass($classname) + { + $this->_owningModelClass = $classname; + return $this; + } + + public function setValue($value) + { + // If the fields value is not going to change, leave. + if (is_object($value) === true) { + // weak comparison for objects + // TODO: DateTimeZone == DateTimeZone always returns true in weak equal check! Why? + if ($value == $this->_value) { + return $this; + } + } else { + // strong comparison for other values + if ($value === $this->_value) { + return $this; + } + } + + // if (true === is_array($value) and 1 === count($value)) { + // //$value = array_pop($value); + // } + if (true === is_array($value) and 0 === count($value)) { + $value = null; + } elseif (is_bool($value)) { + // make sure 'false' is not converted to '' (empty string), but 0 for database + $value = (int)$value; + } + + // if null is given, delete dependent objects + if (null === $value) { + //$this->_deleteDependentModels(); + } else { + $multiValueCondition = $this->hasMultipleValues(); + $arrayCondition = is_array($value); + + // arrayfy value + $values = $value; + if (false === $arrayCondition) { + $values = array($value); + } + // remove wrapper array if multivalue condition is not given + if (false === $multiValueCondition) { + $value = $values[0]; + } + + $this->_value = $value; + return $this; + } + } + + public function getValue($index = null) + { + + // wrap start value in array if multivalue option is set for this field + $this->_value = $this->_wrapValueInArrayIfRequired($this->_value); + + // Caller requested a specific array index + //if (!is_null($index)) { + // if (true === is_array($this->_value)) { + // if (true === isset($this->_value[$index])) { + // return $this->_value[$index]; + // } + // else { + // throw new \Exception('Unvalid index: ' . $index); + // } + // } + // else { + // throw new \Exception('Invalid index (' . $index . '). Requested value is not an array.'); + // } + //} + + return $this->_value; + } + + private function _wrapValueInArrayIfRequired($value) + { + if (is_array($value) or !$this->hasMultipleValues()) { + return $value; + } + + if (is_null($value)) { + return array(); + } + + return array($value); + } + + public function hasMultipleValues() + { + return $this->_hasMultipleValues; + } + + public function setMultiplicity($max) + { + if ($max !== '*') { + if ((is_int($max) === false) or ($max < 1)) { + throw new \Exception('Only integer values > 1 or "*" allowed.'); + } + } + $this->_multiplicity = $max; + $this->_hasMultipleValues = (($max > 1) or ($max === '*')); + return $this; + } + + /** + * Return the name of model class if the field holds link model instances. + * + * @return string Class name or null if the value is not a model. + */ + public function getLinkModelClass() + { + return $this->_linkModelClass; + } +} diff --git a/app/Library/Xml/Strategy.php b/app/Library/Xml/Strategy.php new file mode 100644 index 0000000..5d1078e --- /dev/null +++ b/app/Library/Xml/Strategy.php @@ -0,0 +1,232 @@ +_version = 1.0; + $this->_config = new Conf(); + } + + /** + * (non-PHPdoc) + * see library/Opus/Model/Xml/Opus_Model_Xml_Strategy#setDomDocument() + */ + public function setup(Conf $conf) + { + $this->_config = $conf; + } + + /** + * If a model has been set this method generates and returnes + * DOM representation of it. + * + * @throws \Exception Thrown if no Model is given. + * @return \DOMDocument DOM representation of the current Model. + */ + public function getDomDocument() + { + if (null === $this->_config->model) { + throw new \Exception('No Model given for serialization.'); + } + $this->_config->dom = new DOMDocument('1.0', 'UTF-8'); + $root = $this->_config->dom->createElement('Opus'); + $root->setAttribute('version', $this->getVersion()); + $this->_config->dom->appendChild($root); + $root->setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); + + $this->_mapModel($this->_config->model, $this->_config->dom, $root); + + return $this->_config->dom; + } + + protected function _mapModel(Dataset $model, \DOMDocument $dom, \DOMNode $rootNode) + { + $fields = $model->describe(); + $excludeFields = $this->getConfig()->excludeFields; + if (count($excludeFields) > 0) { + $fieldsDiff = array_diff($fields, $excludeFields); + } else { + $fieldsDiff = $fields; + } + + $childNode = $this->createModelNode($dom, $model); + $rootNode->appendChild($childNode); + + foreach ($fieldsDiff as $fieldname) { + $field = $model->getField($fieldname); + $this->_mapField($field, $dom, $childNode); + } + } + + protected function _mapField(Field $field, DOMDocument $dom, \DOMNode $rootNode) + { + $modelClass = $field->getValueModelClass(); + $fieldValues = $field->getValue(); + + if (true === $this->getConfig()->excludeEmpty) { + if (true === is_null($fieldValues) + or (is_string($fieldValues) && trim($fieldValues) == '') + or (is_array($fieldValues) && empty($fieldValues))) { + return; + } + } + + if (null === $modelClass) { + $this->mapSimpleField($dom, $rootNode, $field); + } else { + $fieldName = $field->getName(); + + if (!is_array($fieldValues)) { + $fieldValues = array($fieldValues); + } + + foreach ($fieldValues as $value) { + $childNode = $this->createFieldElement($dom, $fieldName); + //$childNode->setAttribute("Value", $value); + $rootNode->appendChild($childNode); + + + // if a field has no value then is nothing more to do + // TODO maybe must be there an other solution + // FIXME remove code duplication (duplicates Opus_Model_Xml_Version*) + if (is_null($value)) { + continue; + } + + if ($value instanceof \Illuminate\Database\Eloquent\Model) { + $this->_mapModelAttributes($value, $dom, $childNode); + } elseif ($value instanceof \Carbon\Carbon) { + $this->_mapDateAttributes($value, $dom, $childNode); + } elseif (is_array($value)) { + $this->_mapArrayAttributes($value, $dom, $childNode); + } + } + } + } + + public function mapSimpleField(DOMDocument $dom, \DOMNode $rootNode, Field $field) + { + $fieldName = $field->getName(); + $fieldValues = $this->getFieldValues($field); + + // Replace invalid XML-1.0-Characters by UTF-8 replacement character. + $fieldValues = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/', "\xEF\xBF\xBD ", $fieldValues); + $rootNode->setAttribute($fieldName, $fieldValues); + } + + protected function createFieldElement(DOMDocument $dom, $fieldName) + { + return $dom->createElement($fieldName); + } + + protected function _mapDateAttributes(\Carbon\Carbon $model, DOMDocument $dom, \DOMNode $rootNode) + { + $rootNode->setAttribute("Year", $model->year); + $rootNode->setAttribute("Month", $model->month); + $rootNode->setAttribute("Day", $model->day); + $rootNode->setAttribute("Hour", $model->hour); + $rootNode->setAttribute("Minute", $model->minute); + $rootNode->setAttribute("Second", $model->second); + $rootNode->setAttribute("UnixTimestamp", $model->timestamp); + $rootNode->setAttribute("Timezone", $model->tzName); + } + + protected function _mapArrayAttributes(array $attributes, DOMDocument $dom, \DOMNode $rootNode) + { + //$attributes = array_keys($model->getAttributes()); + foreach ($attributes as $property_name => $value) { + $fieldName = $property_name; + $field = new Field($fieldName); + $fieldval = $value; + $field->setValue($fieldval); + $this->_mapField($field, $dom, $rootNode); + } + } + + protected function _mapModelAttributes(\Illuminate\Database\Eloquent\Model $model, DOMDocument $dom, \DOMNode $rootNode) + { + $attributes = array_keys($model->getAttributes()); + foreach ($attributes as $property_name) { + $fieldName = self::convertColumnToFieldname($property_name); + $field = new Field($fieldName); + $fieldval = $model->{$property_name}; + $field->setValue($fieldval); + $this->_mapField($field, $dom, $rootNode); + } + } + + //snakeToCamel + public static function convertColumnToFieldname($columnname) + { + //return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $columnname)))); + return str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $columnname))); + } + + public function getFieldValues($field) + { + $fieldValues = $field->getValue(); + + // workaround for simple fields with multiple values + if (true === $field->hasMultipleValues()) { + $fieldValues = implode(',', $fieldValues); + } + //if ($fieldValues instanceOf DateTimeZone) { + // $fieldValues = $fieldValues->getName(); + //} + + return trim($fieldValues); + } + + + protected function createModelNode(DOMDocument $dom, Dataset $model) + { + $classname = "Rdr_" . substr(strrchr(get_class($model), '\\'), 1); + return $dom->createElement($classname); + } + + /** + * Return version value of current xml representation. + * + * @see library/Opus/Model/Xml/Opus_Model_Xml_Strategy#getVersion() + */ + public function getVersion() + { + return floor($this->_version); + } + + public function getConfig() + { + return $this->_config; + } +} diff --git a/app/Library/Xml/XmlModel.php b/app/Library/Xml/XmlModel.php new file mode 100644 index 0000000..7e37085 --- /dev/null +++ b/app/Library/Xml/XmlModel.php @@ -0,0 +1,180 @@ + + * @license https://www.gnu.org/licenses/gpl-3.0.txt GNU/GPLv3 + * @link https://gisgba.geologie.ac.at + * @since 1.0.0 + */ +namespace App\Library\Xml; + +use App\XmlCache; +use Illuminate\Support\Facades\Log; + +class XmlModel +{ + /** + * Holds current configuration. + * @var Conf + */ + private $_config = null; + + /** + * Holds current xml strategy object. + * @var Strategy + */ + private $_strategy = null; + + /** + * TODO + * @var XmlCache + */ + private $_cache = null; + + + /** + * Do some initial stuff like setting of a XML version and an empty + * configuration. + */ + public function __construct() + { + $this->_strategy = new Strategy();// Opus_Model_Xml_Version1; + $this->_config = new Conf(); + $this->_strategy->setup($this->_config); + } + + /** + * Set a new XML version with current configuration up. + * + * @param Strategy $strategy Version of Xml to process + * + * @return XmlModel fluent interface. + */ + public function setStrategy(Strategy $strategy) + { + $this->_strategy = $strategy; + $this->_strategy->setup($this->_config); + return $this; + } + + /** + * Set a new XML version with current configuration up. + * + * @param XmlCache $cache cach table + * + * @return XmlModel fluent interface. + */ + public function setXmlCache(XmlCache $cache) + { + $this->_cache = $cache; + return $this; + } + + /** + * Return cache table. + * + * @return XmlCache + */ + public function getXmlCache() + { + return $this->_cache; + } + + /** + * Set the Model for XML generation. + * + * @param \App\Dataset $model Model to serialize. + * + * @return XmlModel Fluent interface. + */ + public function setModel($model) + { + $this->_config->model = $model; + return $this; + } + + /** + * Define that empty fields (value===null) shall be excluded. + * + * @return XmlModel Fluent interface + */ + public function excludeEmptyFields() + { + $this->_config->excludeEmpty = true; + return $this; + } + + /** + * If a model has been set this method generates and returnes + * DOM representation of it. + * + * @return \DOMDocument DOM representation of the current Model. + */ + public function getDomDocument() + { + $dataset = $this->_config->model; + + $domDocument = $this->getDomDocumentFromXmlCache(); + if (!is_null($domDocument)) { + return $domDocument; + } + + //create xml: + $domDocument = $this->_strategy->getDomDocument(); + //if caching is not desired, return domDocument + if (is_null($this->_cache)) { + return $domDocument; + } else { + //create cache relation + $this->_cache->fill(array( + 'document_id' => $dataset->id, + 'xml_version' => (int)$this->_strategy->getVersion(), + 'server_date_modified' => $dataset->server_date_modified, + 'xml_data' => $domDocument->saveXML() + )); + $this->_cache->save(); + + Log::debug(__METHOD__ . ' cache refreshed for ' . get_class($dataset) . '#' . $dataset->id); + return $domDocument; + } + } + + /** + * This method tries to load the current model from the xml cache. Returns + * null in case of an error/cache miss/cache disabled. Returns DOMDocument + * otherwise. + * + * @return \DOMDocument DOM representation of the current Model. + */ + private function getDomDocumentFromXmlCache() + { + $dataset = $this->_config->model; + if (null === $this->_cache) { + //$logger->debug(__METHOD__ . ' skipping cache for ' . get_class($model)); + Log::debug(__METHOD__ . ' skipping cache for ' . get_class($dataset)); + return null; + } + //$cached = $this->_cache->hasValidEntry( + // $dataset->id, + // (int) $this->_strategy->getVersion(), + // $dataset->server_date_modified + //); + + //$cached = false; + $cache = XmlCache::where('document_id', $dataset->id) + ->first();// model or null + if (!$cache) { + Log::debug(__METHOD__ . ' cache miss for ' . get_class($dataset) . '#' . $dataset->id); + return null; + } else { + return $cache->getDomDocument(); + } + } +} diff --git a/app/License.php b/app/License.php new file mode 100644 index 0000000..2081788 --- /dev/null +++ b/app/License.php @@ -0,0 +1,29 @@ +belongsToMany(\App\Dataset::class, 'link_documents_licences', 'licence_id', 'document_id'); + } +} diff --git a/app/Periode.php b/app/Periode.php deleted file mode 100755 index 2b66e32..0000000 --- a/app/Periode.php +++ /dev/null @@ -1,11 +0,0 @@ -setTable(config('permission.table_names.permissions')); + } + + public static function create(array $attributes = []) + { + $attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class); + $permission = static::getPermissions()->filter(function ($permission) use ($attributes) { + return $permission->name === $attributes['name'] && $permission->guard_name === $attributes['guard_name']; + })->first(); + + if ($permission) { + throw PermissionAlreadyExists::create($attributes['name'], $attributes['guard_name']); + } + if (isNotLumen() && app()::VERSION < '5.4') { + return parent::create($attributes); + } + return static::query()->create($attributes); + } + + /** + * A permission can be applied to roles. + */ + public function roles() : BelongsToMany + { + return $this->belongsToMany( + \App\Role::class, + config('permission.table_names.role_has_permissions'), + 'permission_id', + 'role_id' + ); + } + + + + public static function findByName(string $name, $guardName = null): PermissionContract + { + $guardName = $guardName ?? Guard::getDefaultName(static::class); + + $permission = static::getPermissions() + ->filter(function ($permission) use ($name, $guardName) { + return $permission->name === $name && $permission->guard_name === $guardName; + }) + ->first(); + + if (! $permission) { + throw PermissionDoesNotExist::create($name, $guardName); + } + + return $permission; + } + + public static function findById(int $id, $guardName = null): PermissionContract + { + $guardName = $guardName ?? Guard::getDefaultName(static::class); + $permission = static::getPermissions() + ->filter(function ($permission) use ($id, $guardName) { + return $permission->id === $id && $permission->guard_name === $guardName; + }) + ->first(); + + if (! $permission) { + throw PermissionDoesNotExist::withId($id, $guardName); + } + return $permission; + } + + public static function findOrCreate(string $name, $guardName = null): PermissionContract + { + $guardName = $guardName ?? Guard::getDefaultName(static::class); + $permission = static::getPermissions() + ->filter(function ($permission) use ($name, $guardName) { + return $permission->name === $name && $permission->guard_name === $guardName; + }) + ->first(); + + if (! $permission) { + return static::create(['name' => $name, 'guard_name' => $guardName]); + } + return $permission; + } + + protected static function getPermissions(): Collection + { + return app(PermissionRegistrar::class)->getPermissions(); + } +} diff --git a/app/Person.php b/app/Person.php new file mode 100644 index 0000000..1bf1a78 --- /dev/null +++ b/app/Person.php @@ -0,0 +1,49 @@ +belongsToMany(\App\Dataset::class, 'link_documents_persons', 'person_id', 'document_id') + ->withPivot('role'); + } + + + // public function scopeNotLimit($query) + // { + // return $query->where('borrow', '<', 3); + // } + /** + * Get the user's full name. + * + * @return string + */ + public function getFullName() + { + return $this->first_name . " " . $this->last_name; + } + + public function scopeActive($query) + { + return $query->where('status', 1); + } + + public function scopeOrderByName($query) + { + return $query->orderBy('last_name'); + } +} diff --git a/app/Project.php b/app/Project.php new file mode 100644 index 0000000..13870f6 --- /dev/null +++ b/app/Project.php @@ -0,0 +1,29 @@ +all(); + //$project = Project::create($input); + protected $fillable = [ + 'name', 'label' + ]; + + + public function documents() + { + //model, foreign key on the Document model is project_id, local id of category + return $this->hasMany(\App\Dataset::class, 'project_id', 'id'); + } + + // public function books() + // { + // //model, foreign key on the Book model is project_id, local id of category + // return $this->hasMany('App\Book', 'project_id', 'id'); + // } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ff9d6f6..3d3956e 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -26,8 +26,8 @@ class AppServiceProvider extends ServiceProvider { public function register() { $this->app->bind( - 'Illuminate\Contracts\Auth\Registrar', - 'App\Services\Registrar' + 'Illuminate\Contracts\Auth\Registrar' + // 'App\Services\Registrar' ); } diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..d7c0008 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,24 @@ +mapUsing(function($command) - { - return Dispatcher::simpleMapping( - $command, 'App\Commands', 'App\Handlers\Commands' - ); - }); - } - - /** - * Register any application services. - * - * @return void - */ - public function register() - { - // - } - -} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 1cece99..ecafec4 100755 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -11,10 +11,10 @@ class EventServiceProvider extends ServiceProvider { * @var array */ protected $listen = [ - 'event.name' => [ - 'EventListener', - ], - ]; + 'App\Events\Event' => [ + 'App\Listeners\EventListener', + ], + ]; /** * Register any other events for your application. @@ -22,9 +22,9 @@ class EventServiceProvider extends ServiceProvider { * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ - public function boot(DispatcherContract $events) + public function boot() { - parent::boot($events); + parent::boot(); // } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index afa34c8..b1e06e6 100755 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -1,9 +1,12 @@ -group(['namespace' => $this->namespace], function($router) - { - require app_path('Http/routes.php'); - }); + //Route::group(['namespace' => $this->namespace], function() + //{ + // require app_path('Http/routes.php'); + //}); + $this->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::middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + } + } diff --git a/app/Providers/SolariumServiceProvider.php b/app/Providers/SolariumServiceProvider.php new file mode 100644 index 0000000..e857b46 --- /dev/null +++ b/app/Providers/SolariumServiceProvider.php @@ -0,0 +1,43 @@ +app->bind(Client::class, function ($app) { + // $config = config('solarium'); + $config = array( + 'endpoint' => array( + 'localhost' => array( + 'host' => '127.0.0.1', + 'port' => '8983', + 'path' => '/solr/', + 'core' => 'opus4' + ) + ) + ); + //return new Client($config); + return new Client($config); + //return new Client($app['config']['solarium']); + }); + } + + public function provides() + { + return [Client::class]; + } + +} diff --git a/app/Role.php b/app/Role.php index e07cc21..a3dcb05 100755 --- a/app/Role.php +++ b/app/Role.php @@ -1,14 +1,122 @@ -belongsToMany('App\User'); +class Role extends Model implements RoleContract +{ + use HasPermissions; + use RefreshesPermissionCache; - } + //protected $table = 'user_roles'; + public $timestamps = false; + public $guarded = ['id']; + + public function __construct(array $attributes = []) + { + $attributes['guard_name'] = $attributes['guard_name'] ?? config('auth.defaults.guard'); + parent::__construct($attributes); + $this->setTable(config('permission.table_names.roles')); + } + + public static function create(array $attributes = []) + { + $attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class); + + if (static::where('name', $attributes['name']) + ->where('guard_name', $attributes['guard_name'])->first()) { + throw RoleAlreadyExists::create($attributes['name'], $attributes['guard_name']); + } + + if (isNotLumen() && app()::VERSION < '5.4') { + return parent::create($attributes); + } + + return static::query()->create($attributes); + } + + /** + * A role may be given various permissions. + */ + public function permissions() : BelongsToMany + { + return $this->belongsToMany( + \App\Permission::class, + config('permission.table_names.role_has_permissions'), + 'role_id', + 'permission_id' + ); + } + + /** + * A role belongs to some users of the model associated with its guard. + */ + public function users() : BelongsToMany + { + return $this->belongsToMany( + \App\User::class, + config('permission.table_names.model_has_roles'), + 'role_id', + 'account_id' + ); + } + + public static function findByName(string $name, $guardName = null): RoleContract + { + $guardName = $guardName ?? Guard::getDefaultName(static::class); + + $role = static::where('name', $name)->where('guard_name', $guardName)->first(); + if (! $role) { + throw RoleDoesNotExist::named($name); + } + return $role; + } + + public static function findById(int $id, $guardName = null): RoleContract + { + $guardName = $guardName ?? Guard::getDefaultName(static::class); + $role = static::where('id', $id)->where('guard_name', $guardName)->first(); + if (! $role) { + throw RoleDoesNotExist::withId($id); + } + return $role; + } + + public static function findOrCreate(string $name, $guardName = null): RoleContract + { + $guardName = $guardName ?? Guard::getDefaultName(static::class); + $role = static::where('name', $name)->where('guard_name', $guardName)->first(); + if (! $role) { + return static::create(['name' => $name, 'guard_name' => $guardName]); + } + return $role; + } + + public function hasPermissionTo($permission): bool + { + if (is_string($permission)) { + $permission = app(Permission::class)->findByName($permission, $this->getDefaultGuardName()); + } + + if (is_int($permission)) { + $permission = app(Permission::class)->findById($permission, $this->getDefaultGuardName()); + } + + if (! $this->getGuardNames()->contains($permission->guard_name)) { + throw GuardDoesNotMatch::create($permission->guard_name, $this->getGuardNames()); + } + + return $this->permissions->contains('id', $permission->id); + } } diff --git a/app/Services/Registrar.php b/app/Services/Registrar.php index 1035468..df4ac72 100755 --- a/app/Services/Registrar.php +++ b/app/Services/Registrar.php @@ -1,39 +1,40 @@ - 'required|max:255', - 'email' => 'required|email|max:255|unique:users', - 'password' => 'required|confirmed|min:6', - ]); - } - - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return User - */ - public function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => bcrypt($data['password']), - ]); - } + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + public function validator(array $data) + { + return Validator::make($data, [ + 'name' => 'required|max:255', + 'email' => 'required|email|max:255|unique:users', + 'password' => 'required|confirmed|min:6', + ]); + } + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return User + */ + public function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => bcrypt($data['password']), + ]); + } } diff --git a/app/Shelf.php b/app/Shelf.php index e6a124c..dd77217 100755 --- a/app/Shelf.php +++ b/app/Shelf.php @@ -1,16 +1,17 @@ -hasMany('App\Book'); - } + protected $fillable = [ + 'shelf' + ]; + // public function books() + // { + // return $this->hasMany('App\Book'); + // } } diff --git a/app/Student.php b/app/Student.php deleted file mode 100755 index 3961f1f..0000000 --- a/app/Student.php +++ /dev/null @@ -1,42 +0,0 @@ -hasMany('App\Transaction'); - - } - - public function scopeNotLimit($query) - { - - return $query->where('borrow', '<', 3); - - } - - public function scopeActive($query) - { - - return $query->where('status', 1); - - } - - public function scopeOrderByName($query) - { - - return $query->orderBy('name'); - - } - -} diff --git a/app/Title.php b/app/Title.php new file mode 100644 index 0000000..19900d8 --- /dev/null +++ b/app/Title.php @@ -0,0 +1,21 @@ +belongsTo(\App\Dataset::class, 'document_id', 'id'); + } +} diff --git a/app/Transaction.php b/app/Transaction.php index f92b790..151f39b 100755 --- a/app/Transaction.php +++ b/app/Transaction.php @@ -1,44 +1,38 @@ -belongsTo('App\Student'); - - } + public function student() + { + return $this->belongsTo('App\Person', 'student_id'); + } - public function book() - { - - return $this->belongsTo('App\Book'); - - } + public function book() + { + //model, foreign key in tsis model, primary key of relation + return $this->belongsTo('App\Book', 'book_id', 'id'); + } - public function scopeNotReturnedYet($query) - { - - return $query->where('status', 0); - - } - - public function scopeReturned($query) - { - - return $query->where('status', 1); - - } + public function scopeNotReturnedYet($query) + { + return $query->where('status', 0); + } + public function scopeReturned($query) + { + return $query->where('status', 1); + } } diff --git a/app/User.php b/app/User.php index 221846c..8c5396b 100755 --- a/app/User.php +++ b/app/User.php @@ -1,70 +1,88 @@ -belongsToMany('App\Role'); - + if ($password) { + $this->attributes['password'] = app('hash')->needsRehash($password) ? Hash::make($password) : $password; + } } - public function assignRole($role) + //public function roles() + //{ + // return $this->belongsToMany(\App\Role::class, 'link_accounts_roles', 'account_id', 'role_id'); + //} + + public function is($roleName) { - - return $this->roles()->attach($role); - - } - - public function revokeRole($role) - { - - return $this->roles()->detach($role); - - } - - public function hasRole($name) - { - - foreach ($this->roles as $role) { - - if ($role->name === $name) { + foreach ($this->roles()->get() as $role) { + if ($role->name == $roleName) { return true; } - - return false; - } + return false; } + // public function assignRole($role) + // { + // return $this->roles()->attach($role); + // } + + // public function revokeRole($role) + // { + // return $this->roles()->detach($role); + // } + + // public function hasRole($name) + // { + // foreach ($this->roles as $role) + // { + // if ($role->name === $name) + // { + // return true; + // } + // return false; + // } + // return false; + // } } diff --git a/app/XmlCache.php b/app/XmlCache.php new file mode 100644 index 0000000..6f5843a --- /dev/null +++ b/app/XmlCache.php @@ -0,0 +1,81 @@ +belongsTo(\App\Dataset::class, 'document_id', 'id'); + } + + /** + * Get dom document of 'xml_data' string + * + * @return \DOMDocument + */ + public function getDomDocument() + { + $dom = new \DOMDocument('1.0', 'utf-8'); + $xmlData = $this->xml_data; + $dom->loadXML($xmlData); + return $dom; + } + + /** + * Check if a document in a specific xml version is already cached or not. + * + * @param mixed $datasetId + * @param mixed $xmlVersion + * @param mixed $serverDateModified + * @return bool Returns true on cached hit else false. + */ + //public function scopeHasValidEntry($query, $datasetId, $xmlVersion, $serverDateModified) + //{ + // //$select = $this->_table->select()->from($this->_table); + // $query->where('document_id = ?', $datasetId) + // ->where('xml_version = ?', $xmlVersion) + // ->where('server_date_modified = ?', $serverDateModified); + + // $row = $query->get(); + + // if (null === $row) + // { + // return false; + // } + // else + // { + // return true; + // } + //} +} diff --git a/artisan b/artisan index eb5e2bb..fd2d484 100755 --- a/artisan +++ b/artisan @@ -1,6 +1,7 @@ #!/usr/bin/env php singleton( - 'Illuminate\Contracts\Http\Kernel', - 'App\Http\Kernel' + 'Illuminate\Contracts\Http\Kernel', + 'App\Http\Kernel' ); $app->singleton( - 'Illuminate\Contracts\Console\Kernel', - 'App\Console\Kernel' + 'Illuminate\Contracts\Console\Kernel', + 'App\Console\Kernel' ); $app->singleton( - 'Illuminate\Contracts\Debug\ExceptionHandler', - 'App\Exceptions\Handler' + 'Illuminate\Contracts\Debug\ExceptionHandler', + 'App\Exceptions\Handler' ); /* @@ -51,5 +51,4 @@ $app->singleton( | from the actual running of the application and sending responses. | */ - return $app; diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php index bc04666..c27026d 100755 --- a/bootstrap/autoload.php +++ b/bootstrap/autoload.php @@ -29,7 +29,6 @@ require __DIR__.'/../vendor/autoload.php'; $compiledPath = __DIR__.'/../vendor/compiled.php'; -if (file_exists($compiledPath)) -{ - require $compiledPath; +if (file_exists($compiledPath)) { + require $compiledPath; } 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 index 2753d97..3ce15d5 100755 --- a/composer.json +++ b/composer.json @@ -1,20 +1,29 @@ { "name": "laravel/laravel", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "type": "project", "require": { - "laravel/framework": "5.0.*", - "illuminate/html": "5.0.0" + "php": ">=7.0.0", + "fideloper/proxy": "~3.3", + "laravel/framework": "5.5.*", + "laravel/tinker": "~1.0", + "laravelcollective/html": "^5.5.0", + "solarium/solarium": "^3.8", + "spatie/laravel-permission": "^2.12" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "phpspec/phpspec": "~2.1" + "phpunit/phpunit": "~6.0", + "squizlabs/php_codesniffer": "^3.3" }, "autoload": { "classmap": [ - "database" + "database/seeds", + "database/factories" ], "psr-4": { "App\\": "app/" @@ -40,6 +49,17 @@ ] }, "config": { - "preferred-install": "dist" - } + "preferred-install": "dist", + "sort-packages": true, + "optimize-autoloader": true + }, + "authors": [ + { + "name": "Arno Kaimbacher", + "email": "arno.kaimbacher@geologie.ac.at", + "role": "Developer" + } + ], + "prefer-stable": true, + "homepage": "https://www.geologie.ac.at/" } diff --git a/composer.lock b/composer.lock index 2219750..6d9d194 100755 --- a/composer.lock +++ b/composer.lock @@ -1,127 +1,11 @@ { "_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", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "69b6fdd2ba6740c91497627a5ec8554b", + "content-hash": "0f8931d13d9dc7da6803d41b12604e56", "packages": [ - { - "name": "classpreloader/classpreloader", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/ClassPreloader/ClassPreloader.git", - "reference": "f0bfbf71fb3335c9473f695d4d966ba2fb879a9f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/f0bfbf71fb3335c9473f695d4d966ba2fb879a9f", - "reference": "f0bfbf71fb3335c9473f695d4d966ba2fb879a9f", - "shasum": "" - }, - "require": { - "nikic/php-parser": "~1.0", - "php": ">=5.3.3", - "symfony/console": "~2.1", - "symfony/filesystem": "~2.1", - "symfony/finder": "~2.1" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "bin": [ - "classpreloader.php" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "ClassPreloader\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@mineuk.com" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com" - } - ], - "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", - "keywords": [ - "autoload", - "class", - "preload" - ], - "time": "2015-01-26 22:06:19" - }, - { - "name": "danielstjules/stringy", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/danielstjules/Stringy.git", - "reference": "3cf18e9e424a6dedc38b7eb7ef580edb0929461b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/3cf18e9e424a6dedc38b7eb7ef580edb0929461b", - "reference": "3cf18e9e424a6dedc38b7eb7ef580edb0929461b", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Stringy\\": "src/" - }, - "files": [ - "src/Create.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel St. Jules", - "email": "danielst.jules@gmail.com", - "homepage": "http://www.danielstjules.com" - } - ], - "description": "A string manipulation library with multibyte support", - "homepage": "https://github.com/danielstjules/Stringy", - "keywords": [ - "UTF", - "helpers", - "manipulation", - "methods", - "multibyte", - "string", - "utf-8", - "utility", - "utils" - ], - "time": "2015-02-10 06:19:18" - }, { "name": "dnoegel/php-xdg-base-dir", "version": "0.1", @@ -153,37 +37,37 @@ "MIT" ], "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24 07:27:01" + "time": "2014-10-24T07:27:01+00:00" }, { "name": "doctrine/inflector", - "version": "v1.0.1", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604", - "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -220,41 +104,98 @@ "singularize", "string" ], - "time": "2014-12-20 21:24:13" + "time": "2018-01-09T20:05:19+00:00" }, { - "name": "illuminate/html", - "version": "v5.0.0", + "name": "doctrine/lexer", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/illuminate/html.git", - "reference": "3d1009bb8e0f25720c914af5c1f4015dd373c9ef" + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/html/zipball/3d1009bb8e0f25720c914af5c1f4015dd373c9ef", - "reference": "3d1009bb8e0f25720c914af5c1f4015dd373c9ef", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", "shasum": "" }, "require": { - "illuminate/http": "~5.0", - "illuminate/session": "~5.0", - "illuminate/support": "~5.0", - "php": ">=5.4.0" + "php": ">=5.3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "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": "egulias/email-validator", + "version": "2.1.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "8790f594151ca6a2010c6218e09d96df67173ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/8790f594151ca6a2010c6218e09d96df67173ad3", + "reference": "8790f594151ca6a2010c6218e09d96df67173ad3", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">= 5.5" + }, + "require-dev": { + "dominicsayers/isemail": "dev-master", + "phpunit/phpunit": "^4.8.35||^5.7||^6.0", + "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": { - "Illuminate\\Html\\": "" - }, - "files": [ - "helpers.php" - ] + "Egulias\\EmailValidator\\": "EmailValidator" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -262,34 +203,46 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" + "name": "Eduardo Gulias Davis" } ], - "time": "2015-01-01 16:31:18" + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "time": "2018-04-10T10:11:19+00:00" }, { - "name": "ircmaxell/password-compat", - "version": "v1.0.4", + "name": "erusev/parsedown", + "version": "1.7.1", "source": { "type": "git", - "url": "https://github.com/ircmaxell/password_compat.git", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" + "url": "https://github.com/erusev/parsedown.git", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", "shasum": "" }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^4.8.35" }, "type": "library", "autoload": { - "files": [ - "lib/password.php" - ] + "psr-0": { + "Parsedown": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -297,18 +250,75 @@ ], "authors": [ { - "name": "Anthony Ferrara", - "email": "ircmaxell@php.net", - "homepage": "http://blog.ircmaxell.com" + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" } ], - "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", - "homepage": "https://github.com/ircmaxell/password_compat", + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", "keywords": [ - "hashing", - "password" + "markdown", + "parser" ], - "time": "2014-11-20 16:49:30" + "time": "2018-03-08T01:11:30+00:00" + }, + { + "name": "fideloper/proxy", + "version": "3.3.4", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9cdf6f118af58d89764249bbcc7bb260c132924f", + "reference": "9cdf6f118af58d89764249bbcc7bb260c132924f", + "shasum": "" + }, + "require": { + "illuminate/contracts": "~5.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "~5.0", + "mockery/mockery": "~0.9.3", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-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": "2017-06-15T17:19:42+00:00" }, { "name": "jakub-onderka/php-console-color", @@ -351,20 +361,20 @@ "homepage": "http://www.acci.cz" } ], - "time": "2014-04-08 15:00:19" + "time": "2014-04-08T15:00:19+00:00" }, { "name": "jakub-onderka/php-console-highlighter", - "version": "v0.3.1", + "version": "v0.3.2", "source": { "type": "git", "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "05bce997da20acf873e6bf396276798f3cd2c76a" + "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/05bce997da20acf873e6bf396276798f3cd2c76a", - "reference": "05bce997da20acf873e6bf396276798f3cd2c76a", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", "shasum": "" }, "require": { @@ -374,6 +384,7 @@ "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" }, @@ -394,110 +405,50 @@ "homepage": "http://www.acci.cz/" } ], - "time": "2014-07-14 20:59:35" - }, - { - "name": "jeremeamia/SuperClosure", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "b712f39c671e5ead60c7ebfe662545456aade833" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/b712f39c671e5ead60c7ebfe662545456aade833", - "reference": "b712f39c671e5ead60c7ebfe662545456aade833", - "shasum": "" - }, - "require": { - "nikic/php-parser": "~1.0", - "php": ">=5.4" - }, - "require-dev": { - "codeclimate/php-test-reporter": "~0.1.2", - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "time": "2015-03-11 20:06:43" + "time": "2015-04-20T18:58:01+00:00" }, { "name": "laravel/framework", - "version": "v5.0.16", + "version": "v5.5.40", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "861a1e78c84dca82fe4bd85d00349c52304eea77" + "reference": "d724ce0aa61bbd9adf658215eec484f5dd6711d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/861a1e78c84dca82fe4bd85d00349c52304eea77", - "reference": "861a1e78c84dca82fe4bd85d00349c52304eea77", + "url": "https://api.github.com/repos/laravel/framework/zipball/d724ce0aa61bbd9adf658215eec484f5dd6711d6", + "reference": "d724ce0aa61bbd9adf658215eec484f5dd6711d6", "shasum": "" }, "require": { - "classpreloader/classpreloader": "~1.2", - "danielstjules/stringy": "~1.8", - "doctrine/inflector": "~1.0", + "doctrine/inflector": "~1.1", + "erusev/parsedown": "~1.7", "ext-mbstring": "*", - "ext-mcrypt": "*", "ext-openssl": "*", - "ircmaxell/password-compat": "~1.0", - "jeremeamia/superclosure": "~2.0", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", + "league/flysystem": "^1.0.8", + "monolog/monolog": "~1.12", "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.0", - "php": ">=5.4.0", - "psy/psysh": "0.4.*", - "swiftmailer/swiftmailer": "~5.1", - "symfony/console": "2.6.*", - "symfony/debug": "2.6.*", - "symfony/finder": "2.6.*", - "symfony/http-foundation": "2.6.*", - "symfony/http-kernel": "2.6.*", - "symfony/process": "2.6.*", - "symfony/routing": "2.6.*", - "symfony/security-core": "2.6.*", - "symfony/translation": "2.6.*", - "symfony/var-dumper": "2.6.*", - "vlucas/phpdotenv": "~1.0" + "nesbot/carbon": "^1.24.1", + "php": ">=7.0", + "psr/container": "~1.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "~3.0", + "swiftmailer/swiftmailer": "~6.0", + "symfony/console": "~3.3", + "symfony/debug": "~3.3", + "symfony/finder": "~3.3", + "symfony/http-foundation": "~3.3", + "symfony/http-kernel": "~3.3", + "symfony/process": "~3.3", + "symfony/routing": "~3.3", + "symfony/var-dumper": "~3.3", + "tijsverkoyen/css-to-inline-styles": "~2.2", + "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", @@ -508,13 +459,12 @@ "illuminate/database": "self.version", "illuminate/encryption": "self.version", "illuminate/events": "self.version", - "illuminate/exception": "self.version", "illuminate/filesystem": "self.version", - "illuminate/foundation": "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", @@ -524,36 +474,47 @@ "illuminate/support": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "illuminate/view": "self.version", + "tightenco/collect": "<5.5.33" }, "require-dev": { - "aws/aws-sdk-php": "~2.4", - "iron-io/iron_mq": "~1.5", - "mockery/mockery": "~0.9", + "aws/aws-sdk-php": "~3.0", + "doctrine/dbal": "~2.5", + "filp/whoops": "^2.1.4", + "mockery/mockery": "~1.0", + "orchestra/testbench-core": "3.5.*", "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~4.0", - "predis/predis": "~1.0" + "phpunit/phpunit": "~6.0", + "predis/predis": "^1.1.1", + "symfony/css-selector": "~3.3", + "symfony/dom-crawler": "~3.3" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver (~2.4).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers (~5.0).", - "iron-io/iron_mq": "Required to use the iron queue driver (~1.5).", - "league/flysystem-aws-s3-v2": "Required to use the Flysystem S3 driver (~1.0).", + "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.5).", + "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)." + "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 (~3.3).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.3).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.5-dev" } }, "autoload": { - "classmap": [ - "src/Illuminate/Queue/IlluminateQueueClosure.php" - ], "files": [ "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" @@ -569,58 +530,188 @@ "authors": [ { "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" + "email": "taylor@laravel.com" } ], "description": "The Laravel Framework.", - "homepage": "http://laravel.com", + "homepage": "https://laravel.com", "keywords": [ "framework", "laravel" ], - "time": "2015-03-13 13:27:55" + "time": "2018-03-30T13:29:30+00:00" }, { - "name": "league/flysystem", - "version": "1.0.2", + "name": "laravel/tinker", + "version": "v1.0.7", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "51cd7cd7ee0defbaafc6ec0d3620110a5d71e11a" + "url": "https://github.com/laravel/tinker.git", + "reference": "e3086ee8cb1f54a39ae8dcb72d1c37d10128997d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/51cd7cd7ee0defbaafc6ec0d3620110a5d71e11a", - "reference": "51cd7cd7ee0defbaafc6ec0d3620110a5d71e11a", + "url": "https://api.github.com/repos/laravel/tinker/zipball/e3086ee8cb1f54a39ae8dcb72d1c37d10128997d", + "reference": "e3086ee8cb1f54a39ae8dcb72d1c37d10128997d", "shasum": "" }, "require": { - "php": ">=5.4.0" + "illuminate/console": "~5.1", + "illuminate/contracts": "~5.1", + "illuminate/support": "~5.1", + "php": ">=5.5.9", + "psy/psysh": "0.7.*|0.8.*|0.9.*", + "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": "2018-05-17T13:42:07+00:00" + }, + { + "name": "laravelcollective/html", + "version": "v5.5.4", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "04c596a69975b901f2223eb6eb4adf55354121c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/04c596a69975b901f2223eb6eb4adf55354121c2", + "reference": "04c596a69975b901f2223eb6eb4adf55354121c2", + "shasum": "" + }, + "require": { + "illuminate/http": "5.5.*", + "illuminate/routing": "5.5.*", + "illuminate/session": "5.5.*", + "illuminate/support": "5.5.*", + "illuminate/view": "5.5.*", + "php": ">=7.0.0" + }, + "require-dev": { + "illuminate/database": "5.5.*", + "mockery/mockery": "~0.9.4", + "phpunit/phpunit": "~5.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + }, + "laravel": { + "providers": [ + "Collective\\Html\\HtmlServiceProvider" + ], + "aliases": { + "Form": "Collective\\Html\\FormFacade", + "Html": "Collective\\Html\\HtmlFacade" + } + } + }, + "autoload": { + "psr-4": { + "Collective\\Html\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + }, + { + "name": "Adam Engebretson", + "email": "adam@laravelcollective.com" + } + ], + "description": "HTML and Form Builders for the Laravel Framework", + "homepage": "https://laravelcollective.com", + "time": "2018-03-24T00:39:21+00:00" + }, + { + "name": "league/flysystem", + "version": "1.0.45", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a99f94e63b512d75f851b181afcdf0ee9ebef7e6", + "reference": "a99f94e63b512d75f851b181afcdf0ee9ebef7e6", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" }, "require-dev": { "ext-fileinfo": "*", - "league/phpunit-coverage-listener": "~1.1", - "mockery/mockery": "~0.9", - "phpspec/phpspec": "~2.0.0", - "phpspec/prophecy-phpunit": "~1.0", - "phpunit/phpunit": "~4.1", - "predis/predis": "~1.0", - "tedivm/stash": "~0.12.0" + "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-copy": "Allows you to use Copy.com storage", - "league/flysystem-dropbox": "Allows you to use Dropbox storage", "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", - "predis/predis": "Allows you to use Predis for caching" + "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": { @@ -643,10 +734,11 @@ "email": "info@frenky.net" } ], - "description": "Many filesystems, one API.", + "description": "Filesystem abstraction: Many filesystems, one API.", "keywords": [ "Cloud Files", "WebDAV", + "abstraction", "aws", "cloud", "copy.com", @@ -654,6 +746,7 @@ "file systems", "files", "filesystem", + "filesystems", "ftp", "rackspace", "remote", @@ -661,20 +754,20 @@ "sftp", "storage" ], - "time": "2015-03-10 11:04:14" + "time": "2018-05-07T08:44:23+00:00" }, { "name": "monolog/monolog", - "version": "1.13.1", + "version": "1.23.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c31a2c4e8db5da8b46c74cf275d7f109c0f249ac" + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c31a2c4e8db5da8b46c74cf275d7f109c0f249ac", - "reference": "c31a2c4e8db5da8b46c74cf275d7f109c0f249ac", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", "shasum": "" }, "require": { @@ -685,14 +778,17 @@ "psr/log-implementation": "1.0.0" }, "require-dev": { - "aws/aws-sdk-php": "~2.4, >2.4.8", + "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", - "phpunit/phpunit": "~4.0", - "raven/raven": "~0.5", - "ruflin/elastica": "0.90.*", - "swiftmailer/swiftmailer": "~5.3", - "videlalvaro/php-amqplib": "~2.4" + "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", @@ -700,15 +796,17 @@ "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", - "raven/raven": "Allow sending log messages to a Sentry 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", - "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" + "sentry/sentry": "Allow sending log messages to a Sentry server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -734,32 +832,32 @@ "logging", "psr-3" ], - "time": "2015-03-09 09:58:04" + "time": "2017-06-19T01:22:40+00:00" }, { "name": "mtdowling/cron-expression", - "version": "v1.0.4", + "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "fd92e883195e5dfa77720b1868cf084b08be4412" + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/fd92e883195e5dfa77720b1868cf084b08be4412", - "reference": "fd92e883195e5dfa77720b1868cf084b08be4412", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "~4.0|~5.0" }, "type": "library", "autoload": { - "psr-0": { - "Cron": "src/" + "psr-4": { + "Cron\\": "src/Cron/" } }, "notification-url": "https://packagist.org/downloads/", @@ -778,32 +876,41 @@ "cron", "schedule" ], - "time": "2015-01-11 23:07:46" + "time": "2017-01-23T04:29:33+00:00" }, { "name": "nesbot/carbon", - "version": "1.17.0", + "version": "1.31.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "a1dd1ad9abfc8b3c4d8768068e6c71d293424e86" + "reference": "385780c8ca2dbfd25452666e3f55e8dc1df58c41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/a1dd1ad9abfc8b3c4d8768068e6c71d293424e86", - "reference": "a1dd1ad9abfc8b3c4d8768068e6c71d293424e86", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/385780c8ca2dbfd25452666e3f55e8dc1df58c41", + "reference": "385780c8ca2dbfd25452666e3f55e8dc1df58c41", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "^4.8.35 || ^5.7" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, "autoload": { - "psr-0": { - "Carbon": "src" + "psr-4": { + "": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -824,36 +931,42 @@ "datetime", "time" ], - "time": "2015-03-08 14:05:44" + "time": "2018-06-25T13:15:16+00:00" }, { "name": "nikic/php-parser", - "version": "v1.1.0", + "version": "v4.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ac05ef6f95bf8361549604b6031c115f92f39528" + "reference": "35b8caf75e791ba1b2d24fec1552168d72692b12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ac05ef6f95bf8361549604b6031c115f92f39528", - "reference": "ac05ef6f95bf8361549604b6031c115f92f39528", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/35b8caf75e791ba1b2d24fec1552168d72692b12", + "reference": "35b8caf75e791ba1b2d24fec1552168d72692b12", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3" + "php": ">=7.0" }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^7.0" + }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { - "files": [ - "lib/bootstrap.php" - ] + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -869,26 +982,132 @@ "parser", "php" ], - "time": "2015-01-18 11:29:59" + "time": "2018-06-03T11:33:10+00:00" }, { - "name": "psr/log", - "version": "1.0.0", + "name": "paragonie/random_compat", + "version": "v2.0.15", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/10bcb46e8f3d365170f6de9d05245aa066b81f09", + "reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09", "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": { - "psr-0": { - "Psr\\Log\\": "" + "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", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-06-08T15:26:40+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/", @@ -902,45 +1121,95 @@ } ], "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2016-10-10T12:19:37+00:00" }, { - "name": "psy/psysh", - "version": "v0.4.1", + "name": "psr/simple-cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "3787f3436f4fd898e0ac1eb6f5abd2ab6b24085b" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3787f3436f4fd898e0ac1eb6f5abd2ab6b24085b", - "reference": "3787f3436f4fd898e0ac1eb6f5abd2ab6b24085b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "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-10-23T01:57:42+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.9.6", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "4a2ce86f199d51b6e2524214dc06835e872f4fce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4a2ce86f199d51b6e2524214dc06835e872f4fce", + "reference": "4a2ce86f199d51b6e2524214dc06835e872f4fce", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1", "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "~1.0", - "php": ">=5.3.0", - "symfony/console": "~2.3.10|~2.4.2|~2.5" + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0" }, "require-dev": { - "fabpot/php-cs-fixer": "~1.3", - "phpunit/phpunit": "~3.7|~4.0", - "squizlabs/php_codesniffer": "~2.0", - "symfony/finder": "~2.1" + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.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." + "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" @@ -948,14 +1217,14 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.3.x-dev" + "dev-develop": "0.9.x-dev" } }, "autoload": { "files": [ - "src/Psy/functions.php" + "src/functions.php" ], - "psr-0": { + "psr-4": { "Psy\\": "src/" } }, @@ -978,32 +1247,236 @@ "interactive", "shell" ], - "time": "2015-02-25 20:35:54" + "time": "2018-06-10T17:57:20+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v5.3.1", + "name": "ramsey/uuid", + "version": "3.7.3", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "c5f963e7f9d6f6438fda4f22d5cc2db296ec621a" + "url": "https://github.com/ramsey/uuid.git", + "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/c5f963e7f9d6f6438fda4f22d5cc2db296ec621a", - "reference": "c5f963e7f9d6f6438fda4f22d5cc2db296ec621a", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", "shasum": "" }, "require": { - "php": ">=5.3.3" + "paragonie/random_compat": "^1.0|^2.0", + "php": "^5.4 || ^7.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" }, "require-dev": { - "mockery/mockery": "~0.9.1" + "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": "5.3-dev" + "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": "solarium/solarium", + "version": "3.8.1", + "source": { + "type": "git", + "url": "https://github.com/solariumphp/solarium.git", + "reference": "c353babec89fdbe8c64054bfec8e77bcb5da6705" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/solariumphp/solarium/zipball/c353babec89fdbe8c64054bfec8e77bcb5da6705", + "reference": "c353babec89fdbe8c64054bfec8e77bcb5da6705", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "symfony/event-dispatcher": "~2.3|~3.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^3.8 || ^6.2", + "phpunit/phpunit": "~3.7", + "satooshi/php-coveralls": "~1.0", + "squizlabs/php_codesniffer": "~1.4", + "zendframework/zendframework1": "~1.12" + }, + "suggest": { + "minimalcode/search": "Query builder compatible with Solarium, allows simplified solr-query handling" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "3.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Solarium\\": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "See GitHub contributors", + "homepage": "https://github.com/basdenooijer/solarium/contributors" + } + ], + "description": "PHP Solr client", + "homepage": "http://www.solarium-project.org", + "keywords": [ + "php", + "search", + "solr" + ], + "time": "2017-02-02T13:32:22+00:00" + }, + { + "name": "spatie/laravel-permission", + "version": "2.12.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "2affce0021cb9b6f4e249f7c5d94eb68039ffccc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/2affce0021cb9b6f4e249f7c5d94eb68039ffccc", + "reference": "2affce0021cb9b6f4e249f7c5d94eb68039ffccc", + "shasum": "" + }, + "require": { + "illuminate/auth": "~5.3.0|~5.4.0|~5.5.0|~5.6.0", + "illuminate/container": "~5.3.0|~5.4.0|~5.5.0|~5.6.0", + "illuminate/contracts": "~5.3.0|~5.4.0|~5.5.0|~5.6.0", + "illuminate/database": "~5.4.0|~5.5.0|~5.6.0", + "php": ">=7.0" + }, + "require-dev": { + "orchestra/testbench": "~3.3.0|~3.4.2|^3.5.0", + "phpunit/phpunit": "^5.7|6.2|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\Permission\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Permission handling for Laravel 5.4 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "security", + "spatie" + ], + "time": "2018-06-14T02:52:40+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": { @@ -1025,315 +1498,63 @@ } ], "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", + "homepage": "http://swiftmailer.symfony.com", "keywords": [ + "email", "mail", "mailer" ], - "time": "2014-12-05 14:17:14" + "time": "2017-09-30T22:39:41+00:00" }, { "name": "symfony/console", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Console", + "version": "v3.4.12", "source": { "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "e44154bfe3e41e8267d7a3794cd9da9a51cfac34" + "url": "https://github.com/symfony/console.git", + "reference": "1b97071a26d028c9bd4588264e101e14f6e7cd00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/e44154bfe3e41e8267d7a3794cd9da9a51cfac34", - "reference": "e44154bfe3e41e8267d7a3794cd9da9a51cfac34", + "url": "https://api.github.com/repos/symfony/console/zipball/1b97071a26d028c9bd4588264e101e14f6e7cd00", + "reference": "1b97071a26d028c9bd4588264e101e14f6e7cd00", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/process": "~2.1" + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Console\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Console Component", - "homepage": "http://symfony.com", - "time": "2015-01-25 04:39:26" - }, - { - "name": "symfony/debug", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Debug", - "source": { - "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "150c80059c3ccf68f96a4fceb513eb6b41f23300" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/150c80059c3ccf68f96a4fceb513eb6b41f23300", - "reference": "150c80059c3ccf68f96a4fceb513eb6b41f23300", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.2", - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2" - }, - "suggest": { - "symfony/http-foundation": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Debug\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Debug Component", - "homepage": "http://symfony.com", - "time": "2015-01-21 20:57:55" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.6.4", - "target-dir": "Symfony/Component/EventDispatcher", - "source": { - "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "f75989f3ab2743a82fe0b03ded2598a2b1546813" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/f75989f3ab2743a82fe0b03ded2598a2b1546813", - "reference": "f75989f3ab2743a82fe0b03ded2598a2b1546813", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/stopwatch": "~2.3" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2015-02-01 16:10:57" - }, - { - "name": "symfony/filesystem", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Filesystem", - "source": { - "type": "git", - "url": "https://github.com/symfony/Filesystem.git", - "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a1f566d1f92e142fa1593f4555d6d89e3044a9b7", - "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Filesystem\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "http://symfony.com", - "time": "2015-01-03 21:13:09" - }, - { - "name": "symfony/finder", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Finder", - "source": { - "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "16513333bca64186c01609961a2bb1b95b5e1355" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/16513333bca64186c01609961a2bb1b95b5e1355", - "reference": "16513333bca64186c01609961a2bb1b95b5e1355", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Finder\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Finder Component", - "homepage": "http://symfony.com", - "time": "2015-01-03 08:01:59" - }, - { - "name": "symfony/http-foundation", - "version": "v2.6.4", - "target-dir": "Symfony/Component/HttpFoundation", - "source": { - "type": "git", - "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "8fa63d614d56ccfe033e30411d90913cfc483ff6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/8fa63d614d56ccfe033e30411d90913cfc483ff6", - "reference": "8fa63d614d56ccfe033e30411d90913cfc483ff6", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/expression-language": "~2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "classmap": [ - "Symfony/Component/HttpFoundation/Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1341,61 +1562,345 @@ "MIT" ], "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-05-23T05:02:55+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v4.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "03ac71606ecb0b0ce792faa17d74cc32c2949ef4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/03ac71606ecb0b0ce792faa17d74cc32c2949ef4", + "reference": "03ac71606ecb0b0ce792faa17d74cc32c2949ef4", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-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 HttpFoundation Component", - "homepage": "http://symfony.com", - "time": "2015-02-01 16:10:57" + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2018-05-30T07:26:09+00:00" }, { - "name": "symfony/http-kernel", - "version": "v2.6.4", - "target-dir": "Symfony/Component/HttpKernel", + "name": "symfony/debug", + "version": "v3.4.12", "source": { "type": "git", - "url": "https://github.com/symfony/HttpKernel.git", - "reference": "27abf3106d8bd08562070dd4e2438c279792c434" + "url": "https://github.com/symfony/debug.git", + "reference": "47e6788c5b151cf0cfdf3329116bf33800632d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/27abf3106d8bd08562070dd4e2438c279792c434", - "reference": "27abf3106d8bd08562070dd4e2438c279792c434", + "url": "https://api.github.com/repos/symfony/debug/zipball/47e6788c5b151cf0cfdf3329116bf33800632d75", + "reference": "47e6788c5b151cf0cfdf3329116bf33800632d75", "shasum": "" }, "require": { - "php": ">=5.3.3", - "psr/log": "~1.0", - "symfony/debug": "~2.6,>=2.6.2", - "symfony/event-dispatcher": "~2.5.9|~2.6,>=2.6.2", - "symfony/http-foundation": "~2.5,>=2.5.4" + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { - "symfony/browser-kit": "~2.3", - "symfony/class-loader": "~2.1", - "symfony/config": "~2.0,>=2.0.5", - "symfony/console": "~2.3", - "symfony/css-selector": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.2", - "symfony/dom-crawler": "~2.0,>=2.0.5", - "symfony/expression-language": "~2.4", - "symfony/finder": "~2.0,>=2.0.5", - "symfony/process": "~2.0,>=2.0.5", - "symfony/routing": "~2.2", - "symfony/stopwatch": "~2.3", - "symfony/templating": "~2.2", - "symfony/translation": "~2.0,>=2.0.5", - "symfony/var-dumper": "~2.6" + "symfony/http-kernel": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-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-06-25T11:10:40+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v3.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fdd5abcebd1061ec647089c6c41a07ed60af09f8", + "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-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-04-06T07:35:25+00:00" + }, + { + "name": "symfony/finder", + "version": "v3.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "3a8c3de91d2b2c68cd2d665cf9d00f7ef9eaa394" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/3a8c3de91d2b2c68cd2d665cf9d00f7ef9eaa394", + "reference": "3a8c3de91d2b2c68cd2d665cf9d00f7ef9eaa394", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-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-06-19T20:52:10+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v3.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "1c28679fcbb0d9b35e4fd49fbb74d2ca4ea17bce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1c28679fcbb0d9b35e4fd49fbb74d2ca4ea17bce", + "reference": "1c28679fcbb0d9b35e4fd49fbb74d2ca4ea17bce", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" + }, + "require-dev": { + "symfony/expression-language": "~2.8|~3.0|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-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-06-21T11:10:19+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v3.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "cb7edcdc47cab3c61c891e6e55337f8dd470d820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/cb7edcdc47cab3c61c891e6e55337f8dd470d820", + "reference": "cb7edcdc47cab3c61c891e6e55337f8dd470d820", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "^3.4.5|^4.0.5", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" }, "suggest": { "symfony/browser-kit": "", - "symfony/class-loader": "", "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", @@ -1405,45 +1910,47 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\HttpKernel\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpKernel Component", - "homepage": "http://symfony.com", - "time": "2015-02-02 18:02:30" + "homepage": "https://symfony.com", + "time": "2018-06-25T12:29:19+00:00" }, { - "name": "symfony/process", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Process", + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", "source": { "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "ecfc23e89d9967999fa5f60a1e9af7384396e9ae" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/ecfc23e89d9967999fa5f60a1e9af7384396e9ae", - "reference": "ecfc23e89d9967999fa5f60a1e9af7384396e9ae", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", "shasum": "" }, "require": { @@ -1452,13 +1959,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "1.8-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" - } + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1467,297 +1977,486 @@ "authors": [ { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" } ], - "description": "Symfony Process Component", - "homepage": "http://symfony.com", - "time": "2015-01-25 04:39:26" + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-04-30T19:57:29+00:00" }, { - "name": "symfony/routing", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Routing", + "name": "symfony/polyfill-mbstring", + "version": "v1.8.0", "source": { "type": "git", - "url": "https://github.com/symfony/Routing.git", - "reference": "bda1c3c67f2a33bbeabb1d321feaf626a0ca5698" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "3296adf6a6454a050679cde90f95350ad604b171" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/bda1c3c67f2a33bbeabb1d321feaf626a0ca5698", - "reference": "bda1c3c67f2a33bbeabb1d321feaf626a0ca5698", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", + "reference": "3296adf6a6454a050679cde90f95350ad604b171", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-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-04-26T10:06:28+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", + "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "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.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/process", + "version": "v3.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "acc5a37c706ace827962851b69705b24e71ca17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/acc5a37c706ace827962851b69705b24e71ca17c", + "reference": "acc5a37c706ace827962851b69705b24e71ca17c", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-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-05-30T04:24:30+00:00" + }, + { + "name": "symfony/routing", + "version": "v3.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "6b9fef5343828e542db17e2519722ef08992f2c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/6b9fef5343828e542db17e2519722ef08992f2c1", + "reference": "6b9fef5343828e542db17e2519722ef08992f2c1", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/config": "<3.3.1", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.4" + }, "require-dev": { "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", "psr/log": "~1.0", - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/http-foundation": "~2.3", - "symfony/yaml": "~2.0,>=2.0.5" + "symfony/config": "^3.3.1|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~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": "2.6-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Routing\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Routing Component", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "keywords": [ "router", "routing", "uri", "url" ], - "time": "2015-01-15 12:15:12" - }, - { - "name": "symfony/security-core", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Security/Core", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "4603bcc66e20e23f018c67f7f9f3f8146a100c11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/4603bcc66e20e23f018c67f7f9f3f8146a100c11", - "reference": "4603bcc66e20e23f018c67f7f9f3f8146a100c11", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "ircmaxell/password-compat": "1.0.*", - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/expression-language": "~2.6", - "symfony/http-foundation": "~2.4", - "symfony/translation": "~2.0,>=2.0.5", - "symfony/validator": "~2.5,>=2.5.5" - }, - "suggest": { - "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/validator": "For using the user password constraint" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Security\\Core\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Security Component - Core Library", - "homepage": "http://symfony.com", - "time": "2015-01-25 04:39:26" + "time": "2018-06-19T20:52:10+00:00" }, { "name": "symfony/translation", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Translation", + "version": "v4.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/Translation.git", - "reference": "f289cdf8179d32058c1e1cbac723106a5ff6fa39" + "url": "https://github.com/symfony/translation.git", + "reference": "b6d8164085ee0b6debcd1b7a131fd6f63bb04854" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Translation/zipball/f289cdf8179d32058c1e1cbac723106a5ff6fa39", - "reference": "f289cdf8179d32058c1e1cbac723106a5ff6fa39", + "url": "https://api.github.com/repos/symfony/translation/zipball/b6d8164085ee0b6debcd1b7a131fd6f63bb04854", + "reference": "b6d8164085ee0b6debcd1b7a131fd6f63bb04854", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.3,>=2.3.12", - "symfony/intl": "~2.3", - "symfony/yaml": "~2.2" + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "psr/log": "To use logging capability in translator", + "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "4.1-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Translation Component", - "homepage": "http://symfony.com", - "time": "2015-01-03 15:33:07" + "homepage": "https://symfony.com", + "time": "2018-06-22T08:59:39+00:00" }, { "name": "symfony/var-dumper", - "version": "v2.6.4", - "target-dir": "Symfony/Component/VarDumper", + "version": "v3.4.12", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c3d5a36c3e3298bd8b070488fba5537174647353" + "reference": "e173954a28a44a32c690815fbe4d0f2eac43accb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c3d5a36c3e3298bd8b070488fba5537174647353", - "reference": "c3d5a36c3e3298bd8b070488fba5537174647353", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e173954a28a44a32c690815fbe4d0f2eac43accb", + "reference": "e173954a28a44a32c690815fbe4d0f2eac43accb", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "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", "ext-symfony_debug": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.4-dev" } }, "autoload": { "files": [ "Resources/functions/dump.php" ], - "psr-0": { + "psr-4": { "Symfony\\Component\\VarDumper\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "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": "http://symfony.com", + "homepage": "https://symfony.com", "keywords": [ "debug", "dump" ], - "time": "2015-02-02 16:32:08" + "time": "2018-06-15T07:47:49+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v1.1.0", + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.1", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "732d2adb7d916c9593b9d58c3b0d9ebefead07aa" + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/732d2adb7d916c9593b9d58c3b0d9ebefead07aa", - "reference": "732d2adb7d916c9593b9d58c3b0d9ebefead07aa", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^5.5 || ^7.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { - "psr-0": { - "Dotenv": "src/" + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "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": [ { @@ -1767,49 +2466,48 @@ } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "homepage": "http://github.com/vlucas/phpdotenv", "keywords": [ "dotenv", "env", "environment" ], - "time": "2014-12-05 15:19:21" + "time": "2016-09-01T10:05:43+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.0.4", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.0.*@ALPHA" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Instantiator\\": "src" + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1829,41 +2527,246 @@ "constructor", "instantiate" ], - "time": "2014-10-13 12:58:55" + "time": "2017-07-22T11:58:36+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", + "name": "myclabs/deep-copy", + "version": "1.8.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" + "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": "2018-06-11T23:09:50+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": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "phpDocumentor": [ + "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/" ] } @@ -1875,91 +2778,45 @@ "authors": [ { "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "email": "me@mikevanriel.com" } ], - "time": "2015-02-03 12:10:50" + "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": "phpspec/php-diff", - "version": "v1.0.2", + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", "source": { "type": "git", - "url": "https://github.com/phpspec/php-diff.git", - "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a", - "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a", - "shasum": "" - }, - "type": "library", - "autoload": { - "psr-0": { - "Diff": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Chris Boulton", - "homepage": "http://github.com/chrisboulton", - "role": "Original developer" - } - ], - "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", - "time": "2013-11-01 13:02:21" - }, - { - "name": "phpspec/phpspec", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/phpspec/phpspec.git", - "reference": "66a1df93099282b1514e9e001fcf6e9393f7783d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/66a1df93099282b1514e9e001fcf6e9393f7783d", - "reference": "66a1df93099282b1514e9e001fcf6e9393f7783d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { - "doctrine/instantiator": "~1.0,>=1.0.1", - "php": ">=5.3.3", - "phpspec/php-diff": "~1.0.0", - "phpspec/prophecy": "~1.1", - "sebastian/exporter": "~1.0", - "symfony/console": "~2.3", - "symfony/event-dispatcher": "~2.1", - "symfony/finder": "~2.1", - "symfony/process": "~2.1", - "symfony/yaml": "~2.1" + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "behat/behat": "~3.0,>=3.0.11", - "bossa/phpspec2-expect": "~1.0", - "symfony/filesystem": "~2.1" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" }, - "suggest": { - "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" - }, - "bin": [ - "bin/phpspec" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "PhpSpec": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -1968,53 +2825,41 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "homepage": "http://marcelloduarte.net/" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Specification-oriented BDD framework for PHP 5.3+", - "homepage": "http://phpspec.net/", - "keywords": [ - "BDD", - "SpecBDD", - "TDD", - "spec", - "specification", - "testing", - "tests" - ], - "time": "2015-01-09 13:21:45" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.3.1", + "version": "1.7.6", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9" + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9ca52329bcdd1500de24427542577ebf3fc2f1c9", - "reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", "shasum": "" }, "require": { - "doctrine/instantiator": "~1.0,>=1.0.2", - "phpdocumentor/reflection-docblock": "~2.0" + "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|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { - "phpspec/phpspec": "~2.0" + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -2038,7 +2883,7 @@ } ], "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "http://phpspec.org", + "homepage": "https://github.com/phpspec/prophecy", "keywords": [ "Double", "Dummy", @@ -2047,43 +2892,92 @@ "spy", "stub" ], - "time": "2014-11-17 16:23:49" + "time": "2018-04-18T13:57:24+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "2.0.15", + "version": "5.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "34cc484af1ca149188d0d9e91412191e398e0b67" + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/34cc484af1ca149188d0d9e91412191e398e0b67", - "reference": "34cc484af1ca149188d0d9e91412191e398e0b67", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "~1.0", - "sebastian/version": "~1.0" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "phpunit/phpunit": "^6.0" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "5.3.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 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-04-06T15:36:58+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": { @@ -2102,72 +2996,26 @@ "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": "2015-01-24 10:06:35" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "File/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "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": "2013-10-10 15:34:57" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { @@ -2176,20 +3024,17 @@ "type": "library", "autoload": { "classmap": [ - "Text/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2198,35 +3043,40 @@ "keywords": [ "template" ], - "time": "2014-01-30 17:20:04" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", - "version": "1.0.5", + "version": "1.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -2242,33 +3092,33 @@ "keywords": [ "timer" ], - "time": "2013-08-02 07:42:54" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/db32c18eba00b121c145575fcbcd4d4d24e6db74", - "reference": "db32c18eba00b121c145575fcbcd4d4d24e6db74", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2291,45 +3141,57 @@ "keywords": [ "tokenizer" ], - "time": "2015-01-17 09:51:32" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", - "version": "4.5.0", + "version": "6.5.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5b578d3865a9128b9c209b011fda6539ec06e7a5" + "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5b578d3865a9128b9c209b011fda6539ec06e7a5", - "reference": "5b578d3865a9128b9c209b011fda6539ec06e7a5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b", + "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b", "shasum": "" }, "require": { "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "~1.3.1", - "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.2", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.1", - "sebastian/environment": "~1.2", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.0" + "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.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.5", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.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" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" }, "bin": [ "phpunit" @@ -2337,7 +3199,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.5.x-dev" + "dev-master": "6.5.x-dev" } }, "autoload": { @@ -2363,29 +3225,33 @@ "testing", "xunit" ], - "time": "2015-02-05 15:51:19" + "time": "2018-04-10T11:38:34+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "2.3.0", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "c63d2367247365f688544f0d500af90a11a44c65" + "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/c63d2367247365f688544f0d500af90a11a44c65", - "reference": "c63d2367247365f688544f0d500af90a11a44c65", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", + "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", "shasum": "" }, "require": { - "doctrine/instantiator": "~1.0,>=1.0.1", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "~4.3" + "phpunit/phpunit": "^6.5" }, "suggest": { "ext-soap": "*" @@ -2393,7 +3259,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { @@ -2408,7 +3274,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2418,34 +3284,79 @@ "mock", "xunit" ], - "time": "2014-10-03 05:12:11" + "time": "2018-05-29T13:50:43+00:00" }, { - "name": "sebastian/comparator", - "version": "1.1.1", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "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": { @@ -2476,38 +3387,38 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2015-01-29 16:28:08" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", - "version": "1.2.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "5843509fed39dee4b356a306401e9dd1a931fec7" + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/5843509fed39dee4b356a306401e9dd1a931fec7", - "reference": "5843509fed39dee4b356a306401e9dd1a931fec7", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2530,36 +3441,36 @@ } ], "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ "diff" ], - "time": "2014-08-15 10:29:00" + "time": "2017-08-03T08:09:46+00:00" }, { "name": "sebastian/environment", - "version": "1.2.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6e6c71d918088c251b181ba8b3088af4ac336dd7" + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e6c71d918088c251b181ba8b3088af4ac336dd7", - "reference": "6e6c71d918088c251b181ba8b3088af4ac336dd7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.3" + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -2584,33 +3495,34 @@ "environment", "hhvm" ], - "time": "2014-10-25 08:00:45" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "84839970d05254c73cde183a721c7af13aede943" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", - "reference": "84839970d05254c73cde183a721c7af13aede943", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -2650,27 +3562,27 @@ "export", "exporter" ], - "time": "2015-01-27 07:23:06" + "time": "2017-04-03T13:19:02+00:00" }, { "name": "sebastian/global-state", - "version": "1.0.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", - "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -2678,7 +3590,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2701,32 +3613,124 @@ "keywords": [ "global state" ], - "time": "2014-10-06 09:23:50" + "time": "2017-04-27T15:39:26+00:00" }, { - "name": "sebastian/recursion-context", - "version": "1.0.0", + "name": "sebastian/object-enumerator", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "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": { @@ -2754,23 +3758,73 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-01-24 09:48:32" + "time": "2017-03-03T06:23:57+00:00" }, { - "name": "sebastian/version", - "version": "1.0.4", + "name": "sebastian/resource-operations", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/a77d9123f8e809db3fbdea15038c27a95da4058b", - "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b", + "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/" @@ -2789,35 +3843,129 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2014-12-15 14:25:24" + "time": "2016-10-03T07:35:21+00:00" }, { - "name": "symfony/yaml", - "version": "v2.6.4", - "target-dir": "Symfony/Component/Yaml", + "name": "squizlabs/php_codesniffer", + "version": "3.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "60ed7751671113cf1ee7d7778e691642c2e9acd8" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "628a481780561150481a9ec74709092b9759b3ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/60ed7751671113cf1ee7d7778e691642c2e9acd8", - "reference": "60ed7751671113cf1ee7d7778e691642c2e9acd8", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/628a481780561150481a9ec74709092b9759b3ec", + "reference": "628a481780561150481a9ec74709092b9759b3ec", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2018-07-26T23:47:18+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": "2.6-dev" + "dev-master": "1.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" + "psr-4": { + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2826,24 +3974,26 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2015-01-25 04:39:26" + "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": "stable", "stability-flags": [], - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, - "platform": [], + "platform": { + "php": ">=7.0.0" + }, "platform-dev": [] } diff --git a/config/app.php b/config/app.php index a23c330..8a499c8 100755 --- a/config/app.php +++ b/config/app.php @@ -2,202 +2,237 @@ return [ - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application. This value is used when the + | framework needs to place the application's name in a notification or + | any other location as required by the application or its packages. + | + */ - 'debug' => env('APP_DEBUG'), + 'name' => env('APP_NAME', 'App'), + + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + 'env' => env('APP_ENV', 'debug'), + + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'url' => 'http://localhost', + 'debug' => env('APP_DEBUG', false), - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'timezone' => 'UTC', + 'url' => env('APP_URL', 'http://localhost'), - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'locale' => 'en', + 'timezone' => 'UTC', - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'fallback_locale' => 'en', + '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! - | - */ + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'key' => env('APP_KEY', 'SomeRandomString'), + 'fallback_locale' => 'en', - 'cipher' => MCRYPT_RIJNDAEL_128, + /* + |-------------------------------------------------------------------------- + | 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! + | + */ - /* - |-------------------------------------------------------------------------- - | Logging Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure the log settings 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 Settings: "single", "daily", "syslog", "errorlog" - | - */ + 'key' => env('APP_KEY', 'SomeRandomString'), - 'log' => 'daily', + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | Logging Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure the log settings 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 Settings: "single", "daily", "syslog", "errorlog" + | + */ - 'providers' => [ + 'log' => 'single', + 'log_level' => env('APP_LOG_LEVEL', 'debug'), - /* - * Laravel Framework Service Providers... - */ - 'Illuminate\Foundation\Providers\ArtisanServiceProvider', - 'Illuminate\Auth\AuthServiceProvider', - 'Illuminate\Bus\BusServiceProvider', - 'Illuminate\Cache\CacheServiceProvider', - 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider', - 'Illuminate\Routing\ControllerServiceProvider', - 'Illuminate\Cookie\CookieServiceProvider', - 'Illuminate\Database\DatabaseServiceProvider', - 'Illuminate\Encryption\EncryptionServiceProvider', - 'Illuminate\Filesystem\FilesystemServiceProvider', - 'Illuminate\Foundation\Providers\FoundationServiceProvider', - 'Illuminate\Hashing\HashServiceProvider', - 'Illuminate\Mail\MailServiceProvider', - 'Illuminate\Pagination\PaginationServiceProvider', - 'Illuminate\Pipeline\PipelineServiceProvider', - 'Illuminate\Queue\QueueServiceProvider', - 'Illuminate\Redis\RedisServiceProvider', - 'Illuminate\Auth\Passwords\PasswordResetServiceProvider', - 'Illuminate\Session\SessionServiceProvider', - 'Illuminate\Translation\TranslationServiceProvider', - 'Illuminate\Validation\ValidationServiceProvider', - 'Illuminate\View\ViewServiceProvider', + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'Illuminate\Html\HtmlServiceProvider', + 'providers' => [ - /* - * Application Service Providers... - */ - 'App\Providers\AppServiceProvider', - 'App\Providers\BusServiceProvider', - 'App\Providers\ConfigServiceProvider', - 'App\Providers\EventServiceProvider', - 'App\Providers\RouteServiceProvider', + /* + * Laravel Framework Service Providers... + */ + 'Illuminate\Auth\AuthServiceProvider', + Illuminate\Broadcasting\BroadcastServiceProvider::class, + 'Illuminate\Bus\BusServiceProvider', + 'Illuminate\Cache\CacheServiceProvider', + 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider', + //'Illuminate\Routing\ControllerServiceProvider', + 'Illuminate\Cookie\CookieServiceProvider', + 'Illuminate\Database\DatabaseServiceProvider', + 'Illuminate\Encryption\EncryptionServiceProvider', + 'Illuminate\Filesystem\FilesystemServiceProvider', + 'Illuminate\Foundation\Providers\FoundationServiceProvider', + 'Illuminate\Hashing\HashServiceProvider', + 'Illuminate\Mail\MailServiceProvider', + Illuminate\Notifications\NotificationServiceProvider::class, + 'Illuminate\Pagination\PaginationServiceProvider', + 'Illuminate\Pipeline\PipelineServiceProvider', + 'Illuminate\Queue\QueueServiceProvider', + 'Illuminate\Redis\RedisServiceProvider', + 'Illuminate\Auth\Passwords\PasswordResetServiceProvider', + 'Illuminate\Session\SessionServiceProvider', + 'Illuminate\Translation\TranslationServiceProvider', + 'Illuminate\Validation\ValidationServiceProvider', + 'Illuminate\View\ViewServiceProvider', - ], + // 'Illuminate\Html\HtmlServiceProvider', + // 'Collective\Html\HtmlServiceProvider', - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + * Application Service Providers... + */ + 'App\Providers\AppServiceProvider', + // App\Providers\BroadcastServiceProvider::class, + 'App\Providers\ConfigServiceProvider', + 'App\Providers\EventServiceProvider', + 'App\Providers\RouteServiceProvider', - 'aliases' => [ + // List off others providers... + App\Providers\SolariumServiceProvider::class, + Spatie\Permission\PermissionServiceProvider::class, - 'App' => 'Illuminate\Support\Facades\App', - 'Artisan' => 'Illuminate\Support\Facades\Artisan', - 'Auth' => 'Illuminate\Support\Facades\Auth', - 'Blade' => 'Illuminate\Support\Facades\Blade', - 'Bus' => 'Illuminate\Support\Facades\Bus', - 'Cache' => 'Illuminate\Support\Facades\Cache', - 'Config' => 'Illuminate\Support\Facades\Config', - 'Cookie' => 'Illuminate\Support\Facades\Cookie', - 'Crypt' => 'Illuminate\Support\Facades\Crypt', - 'DB' => 'Illuminate\Support\Facades\DB', - 'Eloquent' => 'Illuminate\Database\Eloquent\Model', - 'Event' => 'Illuminate\Support\Facades\Event', - 'File' => 'Illuminate\Support\Facades\File', - 'Hash' => 'Illuminate\Support\Facades\Hash', - 'Input' => 'Illuminate\Support\Facades\Input', - 'Inspiring' => 'Illuminate\Foundation\Inspiring', - 'Lang' => 'Illuminate\Support\Facades\Lang', - 'Log' => 'Illuminate\Support\Facades\Log', - 'Mail' => 'Illuminate\Support\Facades\Mail', - 'Password' => 'Illuminate\Support\Facades\Password', - 'Queue' => 'Illuminate\Support\Facades\Queue', - 'Redirect' => 'Illuminate\Support\Facades\Redirect', - 'Redis' => 'Illuminate\Support\Facades\Redis', - 'Request' => 'Illuminate\Support\Facades\Request', - 'Response' => 'Illuminate\Support\Facades\Response', - 'Route' => 'Illuminate\Support\Facades\Route', - 'Schema' => 'Illuminate\Support\Facades\Schema', - 'Session' => 'Illuminate\Support\Facades\Session', - 'Storage' => 'Illuminate\Support\Facades\Storage', - 'URL' => 'Illuminate\Support\Facades\URL', - 'Validator' => 'Illuminate\Support\Facades\Validator', - 'View' => 'Illuminate\Support\Facades\View', + ], - 'Form' => 'Illuminate\Html\FormFacade', - 'HTML' => 'Illuminate\Html\HtmlFacade', + /* + |-------------------------------------------------------------------------- + | 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', + 'Artisan' => 'Illuminate\Support\Facades\Artisan', + 'Auth' => 'Illuminate\Support\Facades\Auth', + 'Blade' => 'Illuminate\Support\Facades\Blade', + 'Bus' => 'Illuminate\Support\Facades\Bus', + 'Cache' => 'Illuminate\Support\Facades\Cache', + 'Config' => 'Illuminate\Support\Facades\Config', + 'Cookie' => 'Illuminate\Support\Facades\Cookie', + 'Crypt' => 'Illuminate\Support\Facades\Crypt', + 'DB' => 'Illuminate\Support\Facades\DB', + 'Eloquent' => 'Illuminate\Database\Eloquent\Model', + 'Event' => 'Illuminate\Support\Facades\Event', + 'File' => 'Illuminate\Support\Facades\File', + 'Hash' => 'Illuminate\Support\Facades\Hash', + 'Input' => 'Illuminate\Support\Facades\Input', + 'Inspiring' => 'Illuminate\Foundation\Inspiring', + 'Lang' => 'Illuminate\Support\Facades\Lang', + 'Log' => 'Illuminate\Support\Facades\Log', + 'Mail' => 'Illuminate\Support\Facades\Mail', + 'Password' => 'Illuminate\Support\Facades\Password', + 'Queue' => 'Illuminate\Support\Facades\Queue', + 'Redirect' => 'Illuminate\Support\Facades\Redirect', + 'Redis' => 'Illuminate\Support\Facades\Redis', + 'Request' => 'Illuminate\Support\Facades\Request', + 'Response' => 'Illuminate\Support\Facades\Response', + 'Route' => 'Illuminate\Support\Facades\Route', + 'Schema' => 'Illuminate\Support\Facades\Schema', + 'Session' => 'Illuminate\Support\Facades\Session', + 'Storage' => 'Illuminate\Support\Facades\Storage', + 'URL' => 'Illuminate\Support\Facades\URL', + 'Validator' => 'Illuminate\Support\Facades\Validator', + 'View' => 'Illuminate\Support\Facades\View', + + // 'Form' => 'Illuminate\Html\FormFacade', + // 'HTML' => 'Illuminate\Html\HtmlFacade', + // 'Form' => 'Collective\Html\FormFacade', + // 'Html' => 'Collective\Html\HtmlFacade', + + ], ]; diff --git a/config/auth.php b/config/auth.php index 5b436aa..7817501 100755 --- a/config/auth.php +++ b/config/auth.php @@ -2,66 +2,101 @@ return [ - /* - |-------------------------------------------------------------------------- - | Default Authentication Driver - |-------------------------------------------------------------------------- - | - | This option controls the authentication driver that will be utilized. - | This driver manages the retrieval and authentication of the users - | attempting to get access to protected areas of your application. - | - | Supported: "database", "eloquent" - | - */ + /* + |-------------------------------------------------------------------------- + | Authentication Defaults + |-------------------------------------------------------------------------- + | + | This option controls the default authentication "guard" and password + | reset options for your application. You may change these defaults + | as required, but they're a perfect start for most applications. + | + */ - 'driver' => 'eloquent', + 'defaults' => [ + 'guard' => 'web', + 'passwords' => 'users', + ], - /* - |-------------------------------------------------------------------------- - | Authentication Model - |-------------------------------------------------------------------------- - | - | When using the "Eloquent" authentication driver, we need to know which - | Eloquent model should be used to retrieve your users. Of course, it - | is often just the "User" model but you may use whatever you like. - | - */ + /* + |-------------------------------------------------------------------------- + | 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" + | + */ - 'model' => 'App\User', + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], - /* - |-------------------------------------------------------------------------- - | Authentication Table - |-------------------------------------------------------------------------- - | - | When using the "Database" authentication driver, we need to know which - | table should be used to retrieve your users. We have chosen a basic - | default value but you may easily change it to any table you like. - | - */ + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + ], + ], - 'table' => '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" + | + */ - /* - |-------------------------------------------------------------------------- - | Password Reset Settings - |-------------------------------------------------------------------------- - | - | Here you may set the options for resetting passwords including the view - | that is your password reset e-mail. You can also set the name of the - | table that maintains all of the reset tokens for your application. - | - | 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. - | - */ + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\User::class, + ], - 'password' => [ - 'email' => 'emails.password', - 'table' => 'password_resets', - 'expire' => 60, - ], + // '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/cache.php b/config/cache.php index 9ddd5f3..20582d9 100755 --- a/config/cache.php +++ b/config/cache.php @@ -2,78 +2,78 @@ return [ - /* - |-------------------------------------------------------------------------- - | Default Cache Store - |-------------------------------------------------------------------------- - | - | This option controls the default cache connection that gets used while - | using this caching library. This connection is used when another is - | not explicitly specified when executing a given caching function. - | - */ + /* + |-------------------------------------------------------------------------- + | Default Cache Store + |-------------------------------------------------------------------------- + | + | This option controls the default cache connection that gets used while + | using this caching library. This connection is used when another is + | not explicitly specified when executing a given caching function. + | + */ - 'default' => env('CACHE_DRIVER', 'file'), + 'default' => 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => [ + 'stores' => [ - 'apc' => [ - 'driver' => 'apc' - ], + 'apc' => [ + 'driver' => 'apc' + ], - 'array' => [ - 'driver' => 'array' - ], + 'array' => [ + 'driver' => 'array' + ], - 'database' => [ - 'driver' => 'database', - 'table' => 'cache', - 'connection' => null, - ], + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], - 'file' => [ - 'driver' => 'file', - 'path' => storage_path().'/framework/cache', - ], + 'file' => [ + 'driver' => 'file', + 'path' => storage_path().'/framework/cache/data', + ], - 'memcached' => [ - 'driver' => 'memcached', - 'servers' => [ - [ - 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100 - ], - ], - ], + 'memcached' => [ + 'driver' => 'memcached', + 'servers' => [ + [ + 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100 + ], + ], + ], - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => 'laravel', + 'prefix' => 'laravel', ]; diff --git a/config/compile.php b/config/compile.php index 3a002fc..2f00654 100755 --- a/config/compile.php +++ b/config/compile.php @@ -2,40 +2,40 @@ return [ - /* - |-------------------------------------------------------------------------- - | Additional Compiled Classes - |-------------------------------------------------------------------------- - | - | Here you may specify additional classes to include in the compiled file - | generated by the `artisan optimize` command. These should be classes - | that are included on basically every request into the application. - | - */ + /* + |-------------------------------------------------------------------------- + | Additional Compiled Classes + |-------------------------------------------------------------------------- + | + | Here you may specify additional classes to include in the compiled file + | generated by the `artisan optimize` command. These should be classes + | that are included on basically every request into the application. + | + */ - 'files' => [ + 'files' => [ - realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), - realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), - realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), - realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), - realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), + realpath(__DIR__.'/../app/Providers/AppServiceProvider.php'), + realpath(__DIR__.'/../app/Providers/BusServiceProvider.php'), + realpath(__DIR__.'/../app/Providers/ConfigServiceProvider.php'), + realpath(__DIR__.'/../app/Providers/EventServiceProvider.php'), + realpath(__DIR__.'/../app/Providers/RouteServiceProvider.php'), - ], + ], - /* - |-------------------------------------------------------------------------- - | Compiled File Providers - |-------------------------------------------------------------------------- - | - | Here you may list service providers which define a "compiles" function - | that returns additional files that should be compiled, providing an - | easy way to get common files from any packages you are utilizing. - | - */ + /* + |-------------------------------------------------------------------------- + | Compiled File Providers + |-------------------------------------------------------------------------- + | + | Here you may list service providers which define a "compiles" function + | that returns additional files that should be compiled, providing an + | easy way to get common files from any packages you are utilizing. + | + */ - 'providers' => [ - // - ], + 'providers' => [ + // + ], ]; diff --git a/config/database.php b/config/database.php index 54c6db0..aaf5c68 100755 --- a/config/database.php +++ b/config/database.php @@ -2,124 +2,102 @@ return [ - /* - |-------------------------------------------------------------------------- - | PDO Fetch Style - |-------------------------------------------------------------------------- - | - | By default, database results will be returned as instances of the PHP - | stdClass object; however, you may desire to retrieve records in an - | array format for simplicity. Here you can tweak the fetch style. - | - */ + /* + |-------------------------------------------------------------------------- + | PDO Fetch Style + |-------------------------------------------------------------------------- + | + | By default, database results will be returned as instances of the PHP + | stdClass object; however, you may desire to retrieve records in an + | array format for simplicity. Here you can tweak the fetch style. + | + */ - 'fetch' => PDO::FETCH_CLASS, + 'fetch' => PDO::FETCH_CLASS, - /* - |-------------------------------------------------------------------------- - | Default Database Connection Name - |-------------------------------------------------------------------------- - | - | Here you may specify which of the database connections below you wish - | to use as your default connection for all database work. Of course - | you may use many connections at once using the Database library. - | - */ + /* + |-------------------------------------------------------------------------- + | Default Database Connection Name + |-------------------------------------------------------------------------- + | + | Here you may specify which of the database connections below you wish + | to use as your default connection for all database work. Of course + | you may use many connections at once using the Database library. + | + */ - 'default' => 'mysql', + 'default' => 'sqlsrv', - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => [ + 'connections' => [ - 'sqlite' => [ - 'driver' => 'sqlite', - 'database' => storage_path().'/database.sqlite', - 'prefix' => '', - ], + 'sqlite' => [ + 'driver' => 'sqlite', + 'database' => storage_path().'/database.db', + 'prefix' => '', + ], + + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'host' => env('DB_HOST', 'zontik\test'), + 'database' => env('DB_DATABASE', 'opusdb'), + 'username' => env('DB_USERNAME', 'opus4'), + 'password' => env('DB_PASSWORD', 'opus4007'), + 'prefix' => '', + ], - 'mysql' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', - 'prefix' => '', - 'strict' => false, - ], + ], - 'pgsql' => [ - 'driver' => 'pgsql', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => '', - 'schema' => 'public', - ], + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'sqlsrv' => [ - 'driver' => 'sqlsrv', - 'host' => env('DB_HOST', 'localhost'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'prefix' => '', - ], + '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. + | + */ - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + 'redis' => [ - 'migrations' => 'migrations', + 'cluster' => false, - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + 'default' => [ + 'host' => '127.0.0.1', + 'port' => 6379, + 'database' => 0, + ], - 'redis' => [ - - 'cluster' => false, - - 'default' => [ - 'host' => '127.0.0.1', - 'port' => 6379, - 'database' => 0, - ], - - ], + ], ]; diff --git a/config/enums.php b/config/enums.php new file mode 100644 index 0000000..22757fa --- /dev/null +++ b/config/enums.php @@ -0,0 +1,20 @@ + [ + "draft" => "draft", + "accepted" => "accepted", + 'submitted' => 'submitted', + 'published' => 'published', + 'updated' => 'updated' + ], + 'server_states' => [ + "audited" => "audited", + "published" => "published", + 'restricted' => 'restricted', + 'inprogress' => 'inprogress', + 'unpublished' => 'unpublished', + 'deleted' => 'deleted', + 'temporary' => 'temporary' + ] +]; diff --git a/config/filesystems.php b/config/filesystems.php index 0221fa7..0aa9d48 100755 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -2,70 +2,77 @@ return [ - /* - |-------------------------------------------------------------------------- - | Default Filesystem Disk - |-------------------------------------------------------------------------- - | - | Here you may specify the default filesystem disk that should be used - | by the framework. A "local" driver, as well as a variety of cloud - | based drivers are available for your choosing. Just store away! - | - | Supported: "local", "s3", "rackspace" - | - */ + /* + |-------------------------------------------------------------------------- + | Default Filesystem Disk + |-------------------------------------------------------------------------- + | + | Here you may specify the default filesystem disk that should be used + | by the framework. A "local" driver, as well as a variety of cloud + | based drivers are available for your choosing. Just store away! + | + | Supported: "local", "s3", "rackspace" + | + */ - 'default' => 'local', + 'default' => env('FILESYSTEM_DRIVER', 'public'), - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => 's3', + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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. + | + */ - 'disks' => [ + 'disks' => [ - 'local' => [ - 'driver' => 'local', - 'root' => storage_path().'/app', - ], + 'local' => [ + 'driver' => 'local', + 'root' => storage_path().'/app', + ], - 's3' => [ - 'driver' => 's3', - 'key' => 'your-key', - 'secret' => 'your-secret', - 'region' => 'your-region', - 'bucket' => 'your-bucket', - ], + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], - 'rackspace' => [ - 'driver' => 'rackspace', - 'username' => 'your-username', - 'key' => 'your-key', - 'container' => 'your-container', - 'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/', - 'region' => 'IAD', - 'url_type' => 'publicURL' - ], + 's3' => [ + 'driver' => 's3', + 'key' => 'your-key', + 'secret' => 'your-secret', + 'region' => 'your-region', + 'bucket' => 'your-bucket', + ], - ], + 'rackspace' => [ + 'driver' => 'rackspace', + 'username' => 'your-username', + 'key' => 'your-key', + 'container' => 'your-container', + 'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/', + 'region' => 'IAD', + 'url_type' => 'publicURL' + ], + + ], ]; diff --git a/config/mail.php b/config/mail.php index eed11ee..34297e0 100644 --- a/config/mail.php +++ b/config/mail.php @@ -2,123 +2,123 @@ return [ - /* - |-------------------------------------------------------------------------- - | Mail Driver - |-------------------------------------------------------------------------- - | - | Laravel supports both SMTP and PHP's "mail" function as drivers for the - | sending of e-mail. You may specify which one you're using throughout - | your application here. By default, Laravel is setup for SMTP mail. - | - | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "log" - | - */ + /* + |-------------------------------------------------------------------------- + | Mail Driver + |-------------------------------------------------------------------------- + | + | Laravel supports both SMTP and PHP's "mail" function as drivers for the + | sending of e-mail. You may specify which one you're using throughout + | your application here. By default, Laravel is setup for SMTP mail. + | + | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "log" + | + */ - 'driver' => env('MAIL_DRIVER', 'smtp'), + 'driver' => 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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'), + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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), + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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', null), 'name' => 'Hasan Doha'], + 'from' => ['address' => env('MAIL_FROM', null), 'name' => 'Hasan Doha'], - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => 'tls', + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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'), + 'username' => env('MAIL_USERNAME'), - /* - |-------------------------------------------------------------------------- - | SMTP Server Password - |-------------------------------------------------------------------------- - | - | Here you may set the password required by your SMTP server to send out - | messages from your application. This will be given to the server on - | connection so that the application will be able to send messages. - | - */ + /* + |-------------------------------------------------------------------------- + | SMTP Server Password + |-------------------------------------------------------------------------- + | + | Here you may set the password required by your SMTP server to send out + | messages from your application. This will be given to the server on + | connection so that the application will be able to send messages. + | + */ - 'password' => env('MAIL_PASSWORD'), + '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 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', + 'sendmail' => '/usr/sbin/sendmail -bs', - /* - |-------------------------------------------------------------------------- - | Mail "Pretend" - |-------------------------------------------------------------------------- - | - | When this option is enabled, e-mail will not actually be sent over the - | web and will instead be written to your application's logs files so - | you may inspect the message. This is great for local development. - | - */ + /* + |-------------------------------------------------------------------------- + | Mail "Pretend" + |-------------------------------------------------------------------------- + | + | When this option is enabled, e-mail will not actually be sent over the + | web and will instead be written to your application's logs files so + | you may inspect the message. This is great for local development. + | + */ - 'pretend' => false, + 'pretend' => false, ]; diff --git a/config/permission.php b/config/permission.php new file mode 100644 index 0000000..d426594 --- /dev/null +++ b/config/permission.php @@ -0,0 +1,92 @@ + [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => Spatie\Permission\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => Spatie\Permission\Models\Role::class, + + //'role' => App\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + // 'roles' => 'roles', + 'roles' => 'user_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + // 'model_has_roles' => 'model_has_roles', + 'model_has_roles' => 'link_accounts_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + /* + * By default all permissions will be cached for 24 hours unless a permission or + * role is updated. Then the cache will be flushed immediately. + */ + + 'cache_expiration_time' => 60 * 24, + + /* + * When set to true, the required permission/role names are added to the exception + * message. This could be considered an information leak in some contexts, so + * the default setting is false here for optimum safety. + */ + + 'display_permission_in_exception' => false, +]; diff --git a/config/queue.php b/config/queue.php index 9c39a13..3b8f5d3 100755 --- a/config/queue.php +++ b/config/queue.php @@ -2,91 +2,91 @@ return [ - /* - |-------------------------------------------------------------------------- - | Default Queue Driver - |-------------------------------------------------------------------------- - | - | The Laravel queue API supports a variety of back-ends via an unified - | API, giving you convenient access to each back-end using the same - | syntax for each one. Here you may set the default queue driver. - | - | Supported: "null", "sync", "database", "beanstalkd", - | "sqs", "iron", "redis" - | - */ + /* + |-------------------------------------------------------------------------- + | Default Queue Driver + |-------------------------------------------------------------------------- + | + | The Laravel queue API supports a variety of back-ends via an unified + | API, giving you convenient access to each back-end using the same + | syntax for each one. Here you may set the default queue driver. + | + | Supported: "null", "sync", "database", "beanstalkd", + | "sqs", "iron", "redis" + | + */ - 'default' => env('QUEUE_DRIVER', 'sync'), + 'default' => 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => [ + 'connections' => [ - 'sync' => [ - 'driver' => 'sync', - ], + 'sync' => [ + 'driver' => 'sync', + ], - 'database' => [ - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'expire' => 60, - ], + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'expire' => 60, + ], - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'ttr' => 60, - ], + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'ttr' => 60, + ], - 'sqs' => [ - 'driver' => 'sqs', - 'key' => 'your-public-key', - 'secret' => 'your-secret-key', - 'queue' => 'your-queue-url', - 'region' => 'us-east-1', - ], + 'sqs' => [ + 'driver' => 'sqs', + 'key' => 'your-public-key', + 'secret' => 'your-secret-key', + 'queue' => 'your-queue-url', + 'region' => 'us-east-1', + ], - 'iron' => [ - 'driver' => 'iron', - 'host' => 'mq-aws-us-east-1.iron.io', - 'token' => 'your-token', - 'project' => 'your-project-id', - 'queue' => 'your-queue-name', - 'encrypt' => true, - ], + 'iron' => [ + 'driver' => 'iron', + 'host' => 'mq-aws-us-east-1.iron.io', + 'token' => 'your-token', + 'project' => 'your-project-id', + 'queue' => 'your-queue-name', + 'encrypt' => true, + ], - 'redis' => [ - 'driver' => 'redis', - 'queue' => 'default', - 'expire' => 60, - ], + 'redis' => [ + 'driver' => 'redis', + 'queue' => 'default', + 'expire' => 60, + ], - ], + ], - /* - |-------------------------------------------------------------------------- - | 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 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' => 'mysql', 'table' => 'failed_jobs', - ], + 'failed' => [ + 'database' => 'mysql', 'table' => 'failed_jobs', + ], ]; diff --git a/config/services.php b/config/services.php index c2fb21a..40c1507 100755 --- a/config/services.php +++ b/config/services.php @@ -2,36 +2,36 @@ return [ - /* - |-------------------------------------------------------------------------- - | Third Party Services - |-------------------------------------------------------------------------- - | - | This file is for storing the credentials for third party services such - | as Stripe, Mailgun, Mandrill, and others. This file provides a sane - | default location for this type of information, allowing packages - | to have a conventional place to find your various credentials. - | - */ + /* + |-------------------------------------------------------------------------- + | Third Party Services + |-------------------------------------------------------------------------- + | + | This file is for storing the credentials for third party services such + | as Stripe, Mailgun, Mandrill, and others. This file provides a sane + | default location for this type of information, allowing packages + | to have a conventional place to find your various credentials. + | + */ - 'mailgun' => [ - 'domain' => '', - 'secret' => '', - ], + 'mailgun' => [ + 'domain' => '', + 'secret' => '', + ], - 'mandrill' => [ - 'secret' => '', - ], + 'mandrill' => [ + 'secret' => '', + ], - 'ses' => [ - 'key' => '', - 'secret' => '', - 'region' => 'us-east-1', - ], + 'ses' => [ + 'key' => '', + 'secret' => '', + 'region' => 'us-east-1', + ], - 'stripe' => [ - 'model' => 'App\User', - 'secret' => '', - ], + 'stripe' => [ + 'model' => 'App\User', + 'secret' => '', + ], ]; diff --git a/config/session.php b/config/session.php index 47470fa..bc07119 100755 --- a/config/session.php +++ b/config/session.php @@ -2,152 +2,153 @@ return [ - /* - |-------------------------------------------------------------------------- - | Default Session Driver - |-------------------------------------------------------------------------- - | - | This option controls the default session "driver" that will be used on - | requests. By default, we will use the lightweight native driver but - | you may specify any of the other wonderful drivers provided here. - | - | Supported: "file", "cookie", "database", "apc", - | "memcached", "redis", "array" - | - */ + /* + |-------------------------------------------------------------------------- + | Default Session Driver + |-------------------------------------------------------------------------- + | + | This option controls the default session "driver" that will be used on + | requests. By default, we will use the lightweight native driver but + | you may specify any of the other wonderful drivers provided here. + | + | Supported: "file", "cookie", "database", "apc", + | "memcached", "redis", "array" + | + */ - 'driver' => env('SESSION_DRIVER', 'file'), + 'driver' => 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => 120, + 'lifetime' => 60, + // 120, - 'expire_on_close' => false, + 'expire_on_close' => true, - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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, + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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', + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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, + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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', + 'table' => 'sessions', - /* - |-------------------------------------------------------------------------- - | 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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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], + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => 'laravel_session', + 'cookie' => '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => '/', + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => null, + '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. - | - */ + /* + |-------------------------------------------------------------------------- + | 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' => false, + 'secure' => false, ]; diff --git a/config/solarium.php b/config/solarium.php new file mode 100644 index 0000000..87086ed --- /dev/null +++ b/config/solarium.php @@ -0,0 +1,12 @@ + [ + 'localhost' => [ + 'host' => env('SOLR_HOST', 'zontik.gba.geolba.ac.at'), + 'port' => env('SOLR_PORT', '8983'), + 'path' => env('SOLR_PATH', '/solr/'), + 'core' => env('SOLR_CORE', 'opus4') + ] + ] +]; diff --git a/config/view.php b/config/view.php index 88fc534..5b83310 100755 --- a/config/view.php +++ b/config/view.php @@ -2,32 +2,33 @@ return [ - /* - |-------------------------------------------------------------------------- - | View Storage Paths - |-------------------------------------------------------------------------- - | - | Most templating systems load templates from disk. Here you may specify - | an array of paths that should be checked for your views. Of course - | the usual Laravel view path has already been registered for you. - | - */ + /* + |-------------------------------------------------------------------------- + | View Storage Paths + |-------------------------------------------------------------------------- + | + | Most templating systems load templates from disk. Here you may specify + | an array of paths that should be checked for your views. Of course + | the usual Laravel view path has already been registered for you. + | + */ - 'paths' => [ - realpath(base_path('resources/views')) - ], + 'paths' => [ + // realpath(base_path('resources/views')) + 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 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'), + 'compiled' => realpath(storage_path().'/framework/views'), ]; diff --git a/database/.gitignore b/database/.gitignore index 9b1dffd..f894088 100755 --- a/database/.gitignore +++ b/database/.gitignore @@ -1 +1,2 @@ *.sqlite +*.txt \ No newline at end of file diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 36a1db9..ef22e6b 100755 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -19,7 +19,7 @@ class CreateUsersTable extends Migration { $table->string('email')->unique(); $table->string('password', 60); $table->rememberToken(); - $table->timestamps(); + $table->nullableTimestamps(); }); } diff --git a/database/migrations/2015_06_09_041212_create_fines_table.php b/database/migrations/2015_06_09_041212_create_fines_table.php deleted file mode 100755 index 597dcc0..0000000 --- a/database/migrations/2015_06_09_041212_create_fines_table.php +++ /dev/null @@ -1,33 +0,0 @@ -integer('days'); - $table->integer('fines'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('fines'); - } - -} diff --git a/database/migrations/2015_06_09_041219_create_periodes_table.php b/database/migrations/2015_06_09_041219_create_periodes_table.php index 5b5c43d..4b61960 100755 --- a/database/migrations/2015_06_09_041219_create_periodes_table.php +++ b/database/migrations/2015_06_09_041219_create_periodes_table.php @@ -14,6 +14,7 @@ class CreatePeriodesTable extends Migration { { Schema::create('periodes', function(Blueprint $table) { + $table->increments('id'); $table->integer('days'); $table->timestamps(); }); diff --git a/database/migrations/2017_06_01_100607_create_transactions_table.php b/database/migrations/2017_06_01_100607_create_transactions_table.php new file mode 100644 index 0000000..b34f6fc --- /dev/null +++ b/database/migrations/2017_06_01_100607_create_transactions_table.php @@ -0,0 +1,46 @@ +increments('id'); + $table->integer('student_id')->unsigned(); + $table->foreign('student_id')->references('id')->on('students'); + $table->integer('book_id')->unsigned(); + $table->foreign('book_id')->references('id')->on('books'); + $table->integer('borrowed_at'); + $table->integer('returned_at')->default('0'); + $table->integer('fines')->default('0'); + $table->boolean('status')->default('0'); + $table->timestamps(); + }); + // Schema::table('transactions', function($table) { + // $table->foreign('student_id')->references('id')->on('students'); + // }); + // Schema::table('transactions', function($table) { + // $table->foreign('book_id')->references('id')->on('books'); + // }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('transactions'); + } + +} diff --git a/database/migrations/2017_06_01_104359_create_books_table.php b/database/migrations/2017_06_01_104359_create_books_table.php new file mode 100644 index 0000000..2cf6ed7 --- /dev/null +++ b/database/migrations/2017_06_01_104359_create_books_table.php @@ -0,0 +1,41 @@ +increments('id'); + $table->string('title'); + $table->string('author'); + $table->integer('year'); + $table->integer('stock'); + $table->integer('category_id')->unsigned(); + $table->foreign('category_id')->references('id')->on('categories'); + $table->integer('shelf_id')->unsigned(); + $table->foreign('shelf_id')->references('id')->on('shelves'); + $table->integer('year_id')->default('0'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('books'); + } + +} diff --git a/database/migrations/2017_07_05_091036_create_collections_table.php b/database/migrations/2017_07_05_091036_create_collections_table.php new file mode 100644 index 0000000..4a3b923 --- /dev/null +++ b/database/migrations/2017_07_05_091036_create_collections_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('number', 255)->nullable(); + $table->string('name', 255)->nullable(); + $table->string('oai_subset', 255)->nullable(); + $table->integer('parent_id')->unsigned()->nullable(); + $table->foreign('parent_id')->references('id')->on('collections')->onDelete('cascade'); + $table->boolean('visible')->default('1'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('collections'); + } +} diff --git a/database/migrations/2017_07_05_124312_create_documents_table.php b/database/migrations/2017_07_05_124312_create_documents_table.php new file mode 100644 index 0000000..0e0eb71 --- /dev/null +++ b/database/migrations/2017_07_05_124312_create_documents_table.php @@ -0,0 +1,32 @@ +increments('id'); + $table->string('publication_state', 100)->default('draft');; + $table->boolean('belongs_to_bibliography')->default('0'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('documents'); + } +} diff --git a/database/migrations/2017_07_05_133454_create_link_documents_collections.php b/database/migrations/2017_07_05_133454_create_link_documents_collections.php new file mode 100644 index 0000000..2fb00ba --- /dev/null +++ b/database/migrations/2017_07_05_133454_create_link_documents_collections.php @@ -0,0 +1,43 @@ +increments('id'); + + $table->unsignedInteger('collection_id')->nullable()->index(); + $table->foreign('collection_id') + ->references('id')->on('collections') + ->onDelete('set null'); + //->onDelete('cascade'); + + $table->unsignedInteger('document_id')->nullable()->index(); + $table->foreign('document_id') + ->references('id')->on('documents') + ->onDelete('set null'); + //->onDelete('cascade'); + + $table->primary(['collection_id', 'document_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('link_documents_collections'); + } +} diff --git a/database/migrations/2018_02_22_134500_create_persons_table.php b/database/migrations/2018_02_22_134500_create_persons_table.php new file mode 100644 index 0000000..55825d0 --- /dev/null +++ b/database/migrations/2018_02_22_134500_create_persons_table.php @@ -0,0 +1,59 @@ +increments('id'); + + $table->string('name'); + $table->integer('registered_at'); + $table->boolean('status')->default('1'); + + $table->timestamps(); + }); + + Schema::create('link_documents_persons', function (Blueprint $table) { + // $table->increments('id'); + + $table->unsignedInteger('person_id')->index('ix_fk_link_documents_persons_persons'); + $table->foreign('person_id', 'fk_link_documents_persons_persons') + ->references('id')->on('persons') + ->onDelete('no action')->onUpdate('no action');//detach the relation via code + + $table->unsignedInteger('document_id')->index('ix_fk_link_persons_documents_documents'); + $table->foreign('document_id','fk_link_persons_documents_documents') + ->references('id')->on('documents') + ->onDelete('cascade')->onUpdate('cascade'); + + $table + ->enum('role', ['advisor', 'author', 'contributor', 'editor', 'referee', 'other', 'translator', 'submitter']) + ->default('author'); + + $table->primary(['person_id', 'document_id', 'role']); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('persons'); + Schema::drop('link_persons_documents'); + } + +} diff --git a/database/migrations/2018_06_25_135711_create_permission_tables.php b/database/migrations/2018_06_25_135711_create_permission_tables.php new file mode 100644 index 0000000..1224914 --- /dev/null +++ b/database/migrations/2018_06_25_135711_create_permission_tables.php @@ -0,0 +1,91 @@ +increments('id'); + $table->string('name'); + $table->string('guard_name'); + $table->timestamps(); + }); + + Schema::create($tableNames['roles'], function (Blueprint $table) { + $table->increments('id'); + $table->string('name'); + $table->string('guard_name'); + $table->timestamps(); + }); + + Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->unsignedInteger('permission_id'); + $table->morphs('model'); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'model_id', 'model_type'], 'model_has_permissions_permission_model_type_primary'); + }); + + Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames) { + $table->unsignedInteger('role_id'); + $table->morphs('model'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['role_id', 'model_id', 'model_type']); + }); + + Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->unsignedInteger('permission_id'); + $table->unsignedInteger('role_id'); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'role_id']); + + app('cache')->forget('spatie.permission.cache'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $tableNames = config('permission.table_names'); + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +} diff --git a/database/migrations/test/2018_02_19_120518_create_categories_table.php b/database/migrations/test/2018_02_19_120518_create_categories_table.php new file mode 100644 index 0000000..a6d4d1d --- /dev/null +++ b/database/migrations/test/2018_02_19_120518_create_categories_table.php @@ -0,0 +1,32 @@ +increments('id'); + $table->string('category'); + $table->timestamps(); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('categories'); + } +} diff --git a/database/migrations/test/2018_02_20_134555_create_books_table.php b/database/migrations/test/2018_02_20_134555_create_books_table.php new file mode 100644 index 0000000..658be25 --- /dev/null +++ b/database/migrations/test/2018_02_20_134555_create_books_table.php @@ -0,0 +1,39 @@ +increments('id'); + $table->string('title'); + $table->string('author'); + $table->integer('year'); + $table->integer('stock'); + $table->integer('category_id')->unsigned(); + $table->foreign('category_id')->references('id')->on('categories'); + //$table->integer('shelf_id')->unsigned(); + //$table->foreign('shelf_id');//->references('id')->on('shelves'); + $table->integer('year_id')->default('0'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('books'); + } +} diff --git a/database/migrations/test/2018_02_20_135411_create_documents_table.php b/database/migrations/test/2018_02_20_135411_create_documents_table.php new file mode 100644 index 0000000..2ba5b42 --- /dev/null +++ b/database/migrations/test/2018_02_20_135411_create_documents_table.php @@ -0,0 +1,33 @@ +increments('id'); + $table->string('type', 100); + $table->string('publication_state', 100)->default('draft');; + $table->boolean('belongs_to_bibliography')->default('0'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('documents'); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index b3c69b5..aeae886 100755 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -12,9 +12,353 @@ class DatabaseSeeder extends Seeder { */ public function run() { - Model::unguard(); + // Model::unguard(); - // $this->call('UserTableSeeder'); + // DB::table('users')->insert([ + // 'name' => str_random(10), + // 'email' => str_random(10).'@gmail.com', + // 'password' => bcrypt('secret'), + // ]); + + $this->call('StudentTableSeeder'); + $this->call('CategoryTableSeeder'); + $this->call('ShelfTableSeeder'); + $this->call('BookTableSeeder'); + $this->call('PeriodeTableSeeder'); + $this->call('UserTableSeeder'); + $this->call('CollectionTableSeeder'); + $this->call('DocumentTableSeeder'); + $this->command->info('User table seeded!'); } } + +class UserTableSeeder extends Seeder { + + public function run() + { + // DB::table('users')->delete(); + + // User::create([ + // 'name' => str_random(10), + // 'email' => 'foo@gmail.com', + // 'password' => bcrypt('secret') + // ]); + DB::table('users')->insert([ + [ + 'name' => "user1", + 'email' => "user1".'@gmail.com', + 'password' => bcrypt('secret') + ], + [ + 'name' => "admin", + 'email' => 'arno.kaimbacher@hotmail.de', + 'password' => bcrypt('admin007') + ] + ]); + + } + +} + +class PeriodeTableSeeder extends Seeder { + + public function run() + { + // DB::table('users')->delete(); + + // User::create([ + // 'name' => str_random(10), + // 'email' => 'foo@gmail.com', + // 'password' => bcrypt('secret') + // ]); + DB::table('periodes')->insert([ + 'id' => '1', + 'days' => '100', + 'created_at' => '2015-06-09 02:59:49', + 'updated_at' => '2015-06-10 08:14:27' + ]); + + } + +} + +class CategoryTableSeeder extends Seeder { + + public function run() + { + // DB::table('users')->delete(); + + // User::create([ + // 'name' => str_random(10), + // 'email' => 'foo@gmail.com', + // 'password' => bcrypt('secret') + // ]); + DB::table('categories')->insert([ + [ + // 'id' => '1', + 'category' => 'Sains', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + // 'id' => '2', + 'category' => 'Computer', + 'created_at' => '2015-06-09 01:07:41', + 'updated_at' => '2015-06-09 01:07:41' + ], + [ + // 'id' => '3', + 'category' => 'Life Lesson', + 'created_at' => '2015-06-09 01:07:50', + 'updated_at' => '2015-06-09 01:07:50' + ], + [ + // 'id' => '4', + 'category' => 'Fairy Tail', + 'created_at' => '2015-06-09 01:07:50', + 'updated_at' => '2015-06-09 01:07:50' + ] + ]); + + } + +} + +class BookTableSeeder extends Seeder { + + public function run() + { + // DB::table('users')->delete(); + + // User::create([ + // 'name' => str_random(10), + // 'email' => 'foo@gmail.com', + // 'password' => bcrypt('secret') + // ]); + DB::table('books')->insert([ + [ + // 'id' => '1', + 'title' => 'Laravel 5', + 'author' => 'Arno Kaimbacher', + 'year' => '2017', + 'stock' => '9', + 'category_id' => '4', + 'shelf_id' => '1', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36', + 'year_id' => '0' + ], + [ + // 'id' => '2', + 'title' => 'Angular.Js', + 'author' => 'Mark Zuckerberg', + 'year' => '2014', + 'stock' => '5', + 'category_id' => '4', + 'shelf_id' => '3', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36', + 'year_id' => '0' + ], + [ + // 'id' => '3', + 'title' => 'OOP with PHP', + 'author' => 'Richard Stallman', + 'year' => '1999', + 'stock' => '7', + 'category_id' => '1', + 'shelf_id' => '2', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36', + 'year_id' => '0' + ] + ]); + + } + +} + +class ShelfTableSeeder extends Seeder { + + public function run() + { + + DB::table('shelves')->insert([ + [ + 'id' => '1', + 'shelf' => 'A', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '2', + 'shelf' => 'B', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '3', + 'shelf' => 'C', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '4', + 'shelf' => 'D', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '5', + 'shelf' => 'E', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ] + ]); + + } +} + +class StudentTableSeeder extends Seeder { + + public function run() + { + + DB::table('students')->insert([ + [ + 'id' => '1', + 'name' => 'Arno Kaimbacher', + 'registered_at' => '1432080000', + 'borrow' => '1', + 'status' => '1', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '2', + 'name' => 'Chelsea Islan', + 'registered_at' => '1433948676', + 'borrow' => '1', + 'status' => '1', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '3', + 'name' => 'John Mayer', + 'registered_at' => '1434734048', + 'borrow' => '0', + 'status' => '1', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '4', + 'name' => 'Emma Watson', + 'registered_at' => '1434734067', + 'borrow' => '1', + 'status' => '1', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '5', + 'name' => 'Scarlet Johansson', + 'registered_at' => '1434734082', + 'borrow' => '0', + 'status' => '1', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + ]); + + } +} + +class CollectionTableSeeder extends Seeder { + + public function run() + { + // DB::table('users')->delete(); + + // User::create([ + // 'name' => str_random(10), + // 'email' => 'foo@gmail.com', + // 'password' => bcrypt('secret') + // ]); + DB::table('collections')->insert([ + [ + 'id' => '0', + 'number' => null, + 'name' => 'first collection', + 'parent_id' => null, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime() + ], + [ + 'id' => '1', + 'number' => '0', + 'name' => 'Informatik, Informationswissenschaft, allgemeine Werke', + 'parent_id' => '0', + 'created_at' => '2015-06-09 00:17:51', + 'updated_at' => '2015-06-09 01:01:36' + ], + [ + 'id' => '2', + 'number' => '1', + 'name' => 'Philosophie und Psychologie', + 'parent_id' => '0', + 'created_at' => '2015-06-09 01:07:41', + 'updated_at' => '2015-06-09 01:07:41' + ], + [ + 'id' => '3', + 'number' => '2', + 'name' => 'Religion', + 'parent_id' => '0', + 'created_at' => '2015-06-09 01:07:50', + 'updated_at' => '2015-06-09 01:07:50' + ], + [ + 'id' => '4', + 'number' => '3', + 'name' => 'Sozialwissenschaften', + 'parent_id' => '0', + 'created_at' => '2015-06-09 01:07:50', + 'updated_at' => '2015-06-09 01:07:50' + ] + ]); + + } + +} + +class DocumentTableSeeder extends Seeder { + + public function run() + { + DB::table('documents')->insert([ + [ + 'id' => '0' + ], + [ + 'id' => '1' + ] + ]); + + DB::table('link_documents_collections')->insert([ + [ + 'document_id' => '0', + 'collection_id' => '1' + ], + [ + 'document_id' => '1', + 'collection_id' => '1' + ] + ]); + + + } + +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b33abc3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14376 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.0.tgz", + "integrity": "sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "adjust-sourcemap-loader": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz", + "integrity": "sha1-QS2SQE62HkETY1ASy6U6M9AI4OI=", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "1.2.1", + "loader-utils": "1.1.0", + "lodash.assign": "4.2.0", + "lodash.defaults": "3.1.2", + "object-path": "0.9.2", + "regex-parser": "2.2.9" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "dev": true, + "requires": { + "lodash.assign": "3.2.0", + "lodash.restparam": "3.6.1" + }, + "dependencies": { + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } + } + } + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archive-type": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "dev": true, + "requires": { + "file-type": "3.9.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + } + } + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-each-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=", + "dev": true + }, + "attempt-x": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/attempt-x/-/attempt-x-1.1.3.tgz", + "integrity": "sha512-y/+ek8IjxVpTbj/phC87jK5YRhlP5Uu7FlQdCmYuut1DTjNruyrGqUWi5bcX1VKsQX1B0FX16A1hqHomKpHv3A==", + "dev": true + }, + "autoprefixer": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", + "dev": true, + "requires": { + "browserslist": "2.11.3", + "caniuse-lite": "1.0.30000810", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.19", + "postcss-value-parser": "3.3.0" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "axios": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", + "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "dev": true, + "requires": { + "follow-redirects": "1.4.1", + "is-buffer": "1.1.6" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.3.tgz", + "integrity": "sha512-PeN29YvOynPMvNk7QCzsHqxpmfXwKAC+uxkiSNFQsmXBBVltzEkVWmv/Ip3tx7yk149dQUwk497bTXNu+DZjLA==", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.5" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.3", + "invariant": "2.2.3", + "semver": "5.5.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.5", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.5" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.3", + "lodash": "4.17.5" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "bin-build": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", + "dev": true, + "requires": { + "archive-type": "3.2.0", + "decompress": "3.0.0", + "download": "4.4.3", + "exec-series": "1.0.3", + "rimraf": "2.6.2", + "tempfile": "1.1.1", + "url-regex": "3.2.0" + }, + "dependencies": { + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2", + "uuid": "2.0.3" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "bin-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "dev": true, + "requires": { + "executable": "1.1.0" + } + }, + "bin-version": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "dev": true, + "requires": { + "find-versions": "1.2.1" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "dev": true, + "requires": { + "bin-version": "1.0.4", + "minimist": "1.2.0", + "semver": "4.3.6", + "semver-truncate": "1.1.2" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "dev": true, + "requires": { + "bin-check": "2.0.0", + "bin-version-check": "2.1.0", + "download": "4.4.3", + "each-async": "1.1.1", + "lazy-req": "1.1.0", + "os-filter-obj": "1.0.3" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "bootstrap-sass": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz", + "integrity": "sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.1.tgz", + "integrity": "sha1-V7GLHaChnsBvM4N6UnWiQjUb114=", + "dev": true, + "requires": { + "is-array-buffer-x": "1.7.0" + } + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "dev": true, + "requires": { + "file-type": "3.9.0", + "readable-stream": "2.3.4", + "uuid": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.2.4", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cached-constructors-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cached-constructors-x/-/cached-constructors-x-1.0.2.tgz", + "integrity": "sha512-7lKwmwXweW6E/31RHAJemLtZPfb2xvcABXknFF4b/dNYv4DbSGTgQHckXLQkNw6BB4HKFYW6mJgsNjADAy1ehw==", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000810", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000810.tgz", + "integrity": "sha1-vSWDDEHvq2Qzmi44H0lnc0PIRQk=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz", + "integrity": "sha512-/0Q00Oie9C72P8zQHtFvzmkrMC3oOFUnMWjCy5F2+BE8lzICm91hQPhh0+XIsAFPKOe2Dh3pKgbRmU3EKxfldA==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "caw": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "dev": true, + "requires": { + "get-proxy": "1.1.0", + "is-obj": "1.0.1", + "object-assign": "3.0.0", + "tunnel-agent": "0.4.3" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + } + } + }, + "chalk": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "5.2.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "typedarray": "0.0.6" + } + }, + "concatenate": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/concatenate/-/concatenate-0.0.2.tgz", + "integrity": "sha1-C0nW6MQQR9dyjNyNYqCGYjOXtJ8=", + "dev": true, + "requires": { + "globs": "0.1.3" + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "console-stream": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "dev": true, + "requires": { + "bluebird": "3.5.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.7.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-env": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.3.tgz", + "integrity": "sha512-UOokgwvDzCT0mqRSLEkJzUhYXB1vK3E5UgDrD41QiXsm9UetcW2rCGHYz/O3p873lMJ1VZbFCF9Izkwh7nYR5A==", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "is-windows": "1.0.2" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "0.28.10", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.10.tgz", + "integrity": "sha512-X1IJteKnW9Llmrd+lJ0f7QZHh9Arf+11S7iRcoT2+riig3BK0QaCaOtubAulMK6Itbo08W6d3l8sW21r+Jhp5Q==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.2.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "css-select": { + "version": "1.3.0-rc0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.3.0-rc0.tgz", + "integrity": "sha1-b5MZaqrnN2ZuoQNqjLFKj8t6kjE=", + "dev": true, + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz", + "integrity": "sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha25", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha25.tgz", + "integrity": "sha512-XC6xLW/JqIGirnZuUWHXCHRaAjje2b3OIB0Vj5RIJo6mIi/AdJo30quQl5LxUl0gkXDIrTrFGbMlcZjyFplz1A==", + "dev": true, + "requires": { + "mdn-data": "1.1.0", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000810", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.39" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "dev": true, + "requires": { + "buffer-to-vinyl": "1.1.0", + "concat-stream": "1.6.0", + "decompress-tar": "3.1.0", + "decompress-tarbz2": "3.1.0", + "decompress-targz": "3.1.0", + "decompress-unzip": "3.4.0", + "stream-combiner2": "1.1.1", + "vinyl-assign": "1.2.1", + "vinyl-fs": "2.4.4" + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "dev": true, + "requires": { + "is-tar": "1.0.0", + "object-assign": "2.1.1", + "strip-dirs": "1.1.1", + "tar-stream": "1.5.5", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "dev": true, + "requires": { + "is-bzip2": "1.0.0", + "object-assign": "2.1.1", + "seek-bzip": "1.0.5", + "strip-dirs": "1.1.1", + "tar-stream": "1.5.5", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "dev": true, + "requires": { + "is-gzip": "1.0.0", + "object-assign": "2.1.1", + "strip-dirs": "1.1.1", + "tar-stream": "1.5.5", + "through2": "0.6.5", + "vinyl": "0.4.6" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "0.2.0", + "clone-stats": "0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "dev": true, + "requires": { + "is-zip": "1.0.0", + "read-all-stream": "3.1.0", + "stat-mode": "0.2.2", + "strip-dirs": "1.1.1", + "through2": "2.0.3", + "vinyl": "1.2.0", + "yauzl": "2.9.1" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", + "dev": true + }, + "dotenv-expand": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=", + "dev": true + }, + "download": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "dev": true, + "requires": { + "caw": "1.2.0", + "concat-stream": "1.6.0", + "each-async": "1.1.1", + "filenamify": "1.2.1", + "got": "5.7.1", + "gulp-decompress": "1.2.0", + "gulp-rename": "1.2.2", + "is-url": "1.2.2", + "object-assign": "4.1.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.4", + "stream-combiner2": "1.1.1", + "vinyl": "1.2.0", + "vinyl-fs": "2.4.4", + "ware": "1.3.0" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "duplexify": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "stream-shift": "1.0.0" + } + }, + "each-async": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "dev": true, + "requires": { + "onetime": "1.1.0", + "set-immediate-shim": "1.0.1" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.34", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz", + "integrity": "sha1-2TSY9AORuwwWpgPYJBuZUUBBV+0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", + "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", + "dev": true, + "requires": { + "stackframe": "1.0.4" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.39", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.39.tgz", + "integrity": "sha512-AlaXZhPHl0po/uxMx1tyrlt1O86M6D5iVaDH8UgLfgek4kXTX6vzsRfJQWC2Ku+aG8pkw1XWzh9eTkwfVrsD5g==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39" + } + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "dev": true, + "requires": { + "recast": "0.11.23", + "through": "2.3.8" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.39" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "exec-buffer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", + "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "p-finally": "1.0.0", + "pify": "3.0.0", + "rimraf": "2.6.2", + "tempfile": "2.0.0" + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "dev": true, + "requires": { + "async-each-series": "1.1.0", + "object-assign": "4.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "executable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-loader": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", + "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0" + } + }, + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "requires": { + "filename-reserved-regex": "1.0.0", + "strip-outer": "1.0.0", + "trim-repeated": "1.0.0" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "dev": true, + "requires": { + "array-uniq": "1.0.3", + "get-stdin": "4.0.1", + "meow": "3.7.0", + "semver-regex": "1.0.0" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "follow-redirects": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", + "dev": true, + "requires": { + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "friendly-errors-webpack-plugin": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz", + "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "error-stack-parser": "2.0.1", + "string-length": "1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.9.2", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "dev": true, + "requires": { + "rc": "1.2.5" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "gifsicle": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", + "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", + "dev": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "3.0.1", + "glob": "5.0.15", + "glob-parent": "3.1.0", + "micromatch": "2.3.11", + "ordered-read-streams": "0.3.0", + "through2": "0.6.5", + "to-absolute-glob": "0.1.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "globs": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/globs/-/globs-0.1.3.tgz", + "integrity": "sha1-ZwA3ElKHy2VJqtlqRM+mhP18VQI=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "minimatch": "3.0.4" + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.4", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "dev": true, + "requires": { + "archive-type": "3.2.0", + "decompress": "3.0.0", + "gulp-util": "3.0.8", + "readable-stream": "2.3.4" + } + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "dev": true, + "requires": { + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "strip-bom": "2.0.0", + "through2": "2.0.3", + "vinyl": "1.2.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.2", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.1" + } + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.14.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "1.0.0" + } + }, + "has-own-property-x": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/has-own-property-x/-/has-own-property-x-3.2.0.tgz", + "integrity": "sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.4", + "wbuf": "1.7.2" + } + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-loader": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", + "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", + "dev": true, + "requires": { + "es6-templates": "0.2.3", + "fastparse": "1.1.1", + "html-minifier": "3.5.9", + "loader-utils": "1.1.0", + "object-assign": "4.1.1" + } + }, + "html-minifier": { + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.9.tgz", + "integrity": "sha512-EZqO91XJwkj8BeLx9C12sKB/AHoTANaZax39vEOP9f/X/9jgJ3r1O2+neabuHqpz5kJO71TapP9JrtCY39su1A==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.14.1", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.12" + }, + "dependencies": { + "uglify-js": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.12.tgz", + "integrity": "sha512-4jxrTXlV0HaXTsNILfXW0eey7Qo8qHYM6ih5ZNh45erDWU2GHmKDmekwBTskDb12h+kdd2DBvdzqVb47YzNmTA==", + "dev": true, + "requires": { + "commander": "2.14.1", + "source-map": "0.6.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.5", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "6.0.19" + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "imagemin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", + "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", + "dev": true, + "requires": { + "file-type": "4.4.0", + "globby": "6.1.0", + "make-dir": "1.2.0", + "p-pipe": "1.2.0", + "pify": "2.3.0", + "replace-ext": "1.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "imagemin-gifsicle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz", + "integrity": "sha512-K01m5QuPK+0en8oVhiOOAicF7KjrHlCZxS++mfLI2mV/Ksfq/Y9nCXCWDz6jRv13wwlqe5T7hXT+ji2DnLc2yQ==", + "dev": true, + "requires": { + "exec-buffer": "3.2.0", + "gifsicle": "3.0.4", + "is-gif": "1.0.0" + } + }, + "imagemin-mozjpeg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-7.0.0.tgz", + "integrity": "sha1-2SZHf8bvXzp2ikIi97LYCNPrpWg=", + "dev": true, + "requires": { + "execa": "0.8.0", + "is-jpg": "1.0.0", + "mozjpeg": "5.0.0" + }, + "dependencies": { + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + } + } + }, + "imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", + "dev": true, + "requires": { + "exec-buffer": "3.2.0", + "is-png": "1.1.0", + "optipng-bin": "3.1.4" + } + }, + "imagemin-pngquant": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-5.0.1.tgz", + "integrity": "sha1-2KMp2lU6+iJrEc5i3r4Lfje0OeY=", + "dev": true, + "requires": { + "exec-buffer": "3.2.0", + "is-png": "1.1.0", + "pngquant-bin": "3.1.1" + } + }, + "imagemin-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-6.0.0.tgz", + "integrity": "sha512-xwjBZQKpbkklHtJYnCOwRJjTRJA/nR0hQzKMh+CUZRvm/L0QwKKPJQ9tkPWQHrg+cydPu2i1vLgHuy2E0hKEkg==", + "dev": true, + "requires": { + "buffer-from": "0.1.1", + "is-svg": "2.1.0", + "svgo": "1.0.5" + }, + "dependencies": { + "coa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", + "integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==", + "dev": true, + "requires": { + "q": "1.5.1" + } + }, + "csso": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.0.tgz", + "integrity": "sha512-WtJjFP3ZsSdWhiZr4/k1B9uHPgYjFYnDxfbaJxk1hz5PDLIJ5BCRWkJqaztZ0DbP8d2ZIVwUPIJb2YmCwkPaMw==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.27" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.27", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.27.tgz", + "integrity": "sha512-BAYp9FyN4jLXjfvRpTDchBllDptqlK9I7OsagXCG9Am5C+5jc8eRZHgqb9x500W2OKS14MMlpQc/nmh/aA7TEQ==", + "dev": true, + "requires": { + "mdn-data": "1.1.0", + "source-map": "0.5.7" + } + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "svgo": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.0.5.tgz", + "integrity": "sha512-nYrifviB77aNKDNKKyuay3M9aYiK6Hv5gJVDdjj2ZXTQmI8WZc8+UPLR5IpVlktJfSu3co/4XcWgrgI6seGBPg==", + "dev": true, + "requires": { + "coa": "2.0.1", + "colors": "1.1.2", + "css-select": "1.3.0-rc0", + "css-select-base-adapter": "0.1.0", + "css-tree": "1.0.0-alpha25", + "css-url-regex": "1.1.0", + "csso": "3.5.0", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "object.values": "1.0.4", + "sax": "1.2.4", + "stable": "0.1.6", + "unquote": "1.1.1", + "util.promisify": "1.0.0" + } + } + } + }, + "img-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-2.0.1.tgz", + "integrity": "sha512-cD5D+zzIDvVPyX9nmz6+GL20BfpRUKUEXFur9IPeUC8/LRJT/PQ3YJVyKelIum8R5rCVZXgSFB0ccpsnS4IyAQ==", + "dev": true, + "requires": { + "imagemin": "5.3.1", + "imagemin-gifsicle": "5.2.0", + "imagemin-mozjpeg": "7.0.0", + "imagemin-optipng": "5.2.1", + "imagemin-pngquant": "5.0.1", + "imagemin-svgo": "6.0.0", + "loader-utils": "1.1.0" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infinity-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/infinity-x/-/infinity-x-1.0.2.tgz", + "integrity": "sha512-2Ioz+exrAwlHxFBaDHQIbvUyjKFt0YjIal34/agfzx738aT1zBQwSU5A8Zgb1IQ2r24BtXrkeZZusxE40MyZaQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", + "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "dev": true + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", + "dev": true + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "dev": true, + "requires": { + "is-relative": "0.1.3" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-array-buffer-x": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/is-array-buffer-x/-/is-array-buffer-x-1.7.0.tgz", + "integrity": "sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw==", + "dev": true, + "requires": { + "attempt-x": "1.1.3", + "has-to-string-tag-x": "1.4.1", + "is-object-like-x": "1.7.1", + "object-get-own-property-descriptor-x": "3.2.0", + "to-string-tag-x": "1.4.3" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", + "dev": true + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-falsey-x": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-falsey-x/-/is-falsey-x-1.0.3.tgz", + "integrity": "sha512-RWjusR6LXAhGa0Vus7aD1rwJuJwdJsvG3daAVMDvOAgvGuGm4eilNgoSuXhpv2/2qpLDvioAKTNb3t3XYidCNg==", + "dev": true, + "requires": { + "to-boolean-x": "1.0.3" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-finite-x": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-finite-x/-/is-finite-x-3.0.4.tgz", + "integrity": "sha512-wdSI5zk/Pl21HzGcLWFoFzuDa8gsgcqhwZGAZryL2eU7RKf7+g+q4jL2gGItrBs/YtspkjOrJ4JxXNZqquoAWA==", + "dev": true, + "requires": { + "infinity-x": "1.0.2", + "is-nan-x": "1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-function-x": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is-function-x/-/is-function-x-3.3.0.tgz", + "integrity": "sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg==", + "dev": true, + "requires": { + "attempt-x": "1.1.3", + "has-to-string-tag-x": "1.4.1", + "is-falsey-x": "1.0.3", + "is-primitive": "2.0.0", + "normalize-space-x": "3.0.0", + "replace-comments-x": "2.0.0", + "to-boolean-x": "1.0.3", + "to-string-tag-x": "1.4.3" + } + }, + "is-gif": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", + "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "dev": true + }, + "is-index-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-index-x/-/is-index-x-1.1.0.tgz", + "integrity": "sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A==", + "dev": true, + "requires": { + "math-clamp-x": "1.2.0", + "max-safe-integer": "1.0.1", + "to-integer-x": "3.0.0", + "to-number-x": "2.0.0", + "to-string-symbols-supported-x": "1.0.2" + } + }, + "is-jpg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz", + "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", + "dev": true + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-nan-x": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-nan-x/-/is-nan-x-1.0.3.tgz", + "integrity": "sha512-WenNBLVGSZID8shogsB++42vF7gvotCfneXM9KMCAKwNPXa8VfAu/RWwpqvnK7dLOP4Z7uitocb0TZ6rAiOccA==", + "dev": true + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", + "dev": true + }, + "is-nil-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/is-nil-x/-/is-nil-x-1.4.2.tgz", + "integrity": "sha512-9aDY7ir7IGb5HlgqL+b38v2YMxf8S7MEHHxjHGzUhijg2crq47RKdxL37bS6dU0VN87wy2IBZP4akgQtIXmyvg==", + "dev": true, + "requires": { + "lodash.isnull": "3.0.0", + "validate.io-undefined": "1.0.3" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object-like-x": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/is-object-like-x/-/is-object-like-x-1.7.1.tgz", + "integrity": "sha512-89nz+kESAW2Y7udq+PdRX/dZnRN2WP1b19Gdv4OYE1Xjoekn1xf31l0ZPzT40qdPD7I2nveNFm9rxxI0vmnGHA==", + "dev": true, + "requires": { + "is-function-x": "3.3.0", + "is-primitive": "3.0.0" + }, + "dependencies": { + "is-primitive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.0.tgz", + "integrity": "sha512-Qch+MMfMdu7DMY6XElM7LUJKPmkbXdTqNhqyehVflzis2a8Zd9V6U8qZybb32uUSmlO/dNmg3fsA5t0Q9TC0mA==", + "dev": true + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-png": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "is-zip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "dev": true + }, + "js-base64": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "laravel-mix": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-1.7.2.tgz", + "integrity": "sha512-La1eAsCkEdySc9J9MJ/g8Dj1EfGo7aXW92GZKoSbrSg4uQWNNoV824e6+o4f4Eo/YWYrYwZTkdnWJJ1uVqP+dw==", + "dev": true, + "requires": { + "autoprefixer": "7.2.6", + "babel-core": "6.26.0", + "babel-loader": "7.1.3", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "chokidar": "1.7.0", + "clean-css": "4.1.9", + "concatenate": "0.0.2", + "css-loader": "0.28.10", + "dotenv": "4.0.0", + "dotenv-expand": "4.2.0", + "extract-text-webpack-plugin": "3.0.2", + "file-loader": "0.11.2", + "friendly-errors-webpack-plugin": "1.6.1", + "fs-extra": "3.0.1", + "glob": "7.1.2", + "html-loader": "0.4.5", + "img-loader": "2.0.1", + "lodash": "4.17.5", + "md5": "2.2.1", + "node-sass": "4.7.2", + "postcss-loader": "2.1.1", + "resolve-url-loader": "2.2.1", + "sass-loader": "6.0.6", + "style-loader": "0.18.2", + "uglify-js": "2.8.29", + "uglifyjs-webpack-plugin": "1.2.2", + "vue-loader": "13.7.1", + "vue-template-compiler": "2.5.13", + "webpack": "3.11.0", + "webpack-chunk-hash": "0.4.0", + "webpack-dev-server": "2.11.2", + "webpack-merge": "4.1.2", + "webpack-notifier": "1.5.1", + "yargs": "8.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "dev": true, + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isnull": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnull/-/lodash.isnull-3.0.0.tgz", + "integrity": "sha1-+vvlnqHcon7teGU0A53YTC4HxW4=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "logalot": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "dev": true, + "requires": { + "figures": "1.7.0", + "squeak": "1.3.0" + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "indent-string": "2.1.0", + "longest": "1.0.1", + "meow": "3.7.0" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "math-clamp-x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/math-clamp-x/-/math-clamp-x-1.2.0.tgz", + "integrity": "sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg==", + "dev": true, + "requires": { + "to-number-x": "2.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "math-sign-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/math-sign-x/-/math-sign-x-3.0.0.tgz", + "integrity": "sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ==", + "dev": true, + "requires": { + "is-nan-x": "1.0.3", + "to-number-x": "2.0.0" + } + }, + "max-safe-integer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/max-safe-integer/-/max-safe-integer-1.0.1.tgz", + "integrity": "sha1-84BgvixWPYwC5tSK85Ei/YO29BA=", + "dev": true + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "1.1.6" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mdn-data": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.0.tgz", + "integrity": "sha512-jC6B3BFC07cCOU8xx1d+sQtDkVIpGKWv4TzK7pN7PyObdbwlIFJbHYk8ofvr0zrU8SkV1rSi87KAHhWCdLGw1Q==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.4" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + } + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, + "mozjpeg": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-5.0.0.tgz", + "integrity": "sha1-uGccSSRWijY94AP/L9OXq4P3UsU=", + "dev": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "1.1.14" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "nan": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", + "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "dev": true + }, + "nan-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nan-x/-/nan-x-1.0.2.tgz", + "integrity": "sha512-dndRmy03JQEN+Nh6WjQl7/OstIozeEmrtWe4TE7mEqJ8W8oMD8m2tHjsLPWt//e3hLAeRSbs4pxMyc5pk/nCkQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true, + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } + }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", + "dev": true + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.79.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.4", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + } + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "node-sass": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", + "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.9.2", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-space-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-space-x/-/normalize-space-x-3.0.0.tgz", + "integrity": "sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "trim-x": "3.0.0", + "white-space-x": "3.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-get-own-property-descriptor-x": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/object-get-own-property-descriptor-x/-/object-get-own-property-descriptor-x-3.2.0.tgz", + "integrity": "sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg==", + "dev": true, + "requires": { + "attempt-x": "1.1.3", + "has-own-property-x": "3.2.0", + "has-symbol-support-x": "1.4.2", + "is-falsey-x": "1.0.3", + "is-index-x": "1.1.0", + "is-primitive": "2.0.0", + "is-string": "1.0.4", + "property-is-enumerable-x": "1.1.0", + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1", + "has": "1.0.1" + } + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "opn": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "optipng-bin": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", + "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", + "dev": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "readable-stream": "2.3.4" + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-int-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-int-x/-/parse-int-x-2.0.0.tgz", + "integrity": "sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "nan-x": "1.0.2", + "to-string-x": "1.4.5", + "trim-left-x": "3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "pngquant-bin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-3.1.1.tgz", + "integrity": "sha1-0STZinWpSH9AwWQLTb/Lsr1aH9E=", + "dev": true, + "requires": { + "bin-build": "2.2.0", + "bin-wrapper": "3.0.2", + "logalot": "2.1.0" + } + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.19.tgz", + "integrity": "sha512-f13HRz0HtVwVaEuW6J6cOUCBLFtymhgyLPV7t4QEk2UD3twRI9IluDcQNdzQdBpiixkXj2OmzejhhTbSbDxNTg==", + "dev": true, + "requires": { + "chalk": "2.3.1", + "source-map": "0.6.1", + "supports-color": "5.2.0" + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.1.tgz", + "integrity": "sha512-f0J/DWE/hyO9/LH0WHpXkny/ZZ238sSaG3p1SRBtVZnFWUtD7GXIEgHoBg8cnAeRbmEvUxHQptY46zWfwNYj/w==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.19", + "postcss-load-config": "1.2.0", + "schema-utils": "0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", + "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.2.0", + "ajv-keywords": "3.1.0" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "1.0.30000810", + "electron-to-chromium": "1.3.34" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "6.0.19" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.19" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.19" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.19" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "5.2.18" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.3", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.0.tgz", + "integrity": "sha512-5TznPccvjc3WtACW2YuHXQDCCpE6cTU7rpRLTw7dtNmvrI6j8lirXwICrYImyDZknIC4RL2epnGVqRbVAsQw+w==", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "property-is-enumerable-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/property-is-enumerable-x/-/property-is-enumerable-x-1.1.0.tgz", + "integrity": "sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A==", + "dev": true, + "requires": { + "to-object-x": "1.5.0", + "to-property-key-x": "2.0.2" + } + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", + "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.4" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.4", + "set-immediate-shim": "1.0.1" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "3.1.3", + "private": "0.1.8", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "regex-parser": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.9.tgz", + "integrity": "sha512-VncXxOF6uFlYog5prG2j+e2UGJeam5MfNiJnB/qEgo4KTnMm2XrELCg4rNZ6IlaEUZnGlb8aB6lXowCRQtTkkA==", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-comments-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-comments-x/-/replace-comments-x-2.0.0.tgz", + "integrity": "sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg==", + "dev": true, + "requires": { + "require-coercible-to-string-x": "1.0.2", + "to-string-x": "1.4.5" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "require-coercible-to-string-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/require-coercible-to-string-x/-/require-coercible-to-string-x-1.0.2.tgz", + "integrity": "sha512-GZ3BSCL0n/zhho8ITganW9FGPh0Kxhq71nCjck8Qau/30Wf4Po8a3XpQdzEMFiXCwZ/0m0E3lKSdSG8gkcIofQ==", + "dev": true, + "requires": { + "require-object-coercible-x": "1.4.3", + "to-string-x": "1.4.5" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-object-coercible-x": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/require-object-coercible-x/-/require-object-coercible-x-1.4.3.tgz", + "integrity": "sha512-5wEaS+NIiU5HLJQTqBQ+6XHtX7yplUS374j/H/nRDlc7rMWfENqp026jnUHWAOCZ+ekixkXuFHEnTF28oqqVLA==", + "dev": true, + "requires": { + "is-nil-x": "1.4.2" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.2.1.tgz", + "integrity": "sha512-ywToZt/yttp4qG/SiiGMLAgaGuSaWSujAaf3WCadXehvQLxIgKFmMOSegaoH9Laa70Ayl4kti0zCAqLR48H/Mw==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "1.1.0", + "camelcase": "4.1.0", + "convert-source-map": "1.5.1", + "loader-utils": "1.1.0", + "lodash.defaults": "4.2.0", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.5.7", + "urix": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "0.3.5", + "css": "2.2.1" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.2", + "lodash": "4.17.5", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + } + } + }, + "sass-loader": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "dev": true, + "requires": { + "async": "2.6.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.4.3", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", + "dev": true, + "requires": { + "node-forge": "0.7.1" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "dev": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.18", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "dev": true, + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=", + "dev": true + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "dev": true + }, + "spdx-correct": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-2.0.4.tgz", + "integrity": "sha512-c+4gPpt9YDhz7cHlz5UrsHzxxRi4ksclxnEEKsuGT9JdwSC+ZNmsGbYRzzgxyZaBYpcWnlu+4lPcdLKx4DOCmA==", + "dev": true, + "requires": { + "spdx-expression-parse": "2.0.2", + "spdx-license-ids": "2.0.1" + }, + "dependencies": { + "spdx-expression-parse": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-2.0.2.tgz", + "integrity": "sha512-oFxOkWCfFS0ltNp0H66gXlU4NF6bxg7RkoTYR0413t+yTY9zyj+AIWsjtN8dcVp6703ijDYBWBIARlJ7DkyP9Q==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "2.0.1" + } + } + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + }, + "dependencies": { + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + } + } + }, + "spdx-license-ids": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-2.0.1.tgz", + "integrity": "sha1-AgF7zDU07k/+9tWNIOfT6aHDyOw=", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.4", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "squeak": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "console-stream": "0.1.1", + "lpad-align": "1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ssri": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.2.4.tgz", + "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stable": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", + "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=", + "dev": true + }, + "stackframe": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", + "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==", + "dev": true + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "2.3.4" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.4" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.4" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.4", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "dev": true, + "requires": { + "first-chunk-stream": "1.0.0", + "strip-bom": "2.0.0" + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "get-stdin": "4.0.1", + "is-absolute": "0.1.7", + "is-natural-number": "2.1.1", + "minimist": "1.2.0", + "sum-up": "1.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", + "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "style-loader": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", + "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "dev": true, + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "supports-color": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-stream": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", + "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.1", + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "dev": true, + "requires": { + "temp-dir": "1.0.0", + "uuid": "3.2.1" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + } + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-boolean-x": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-boolean-x/-/to-boolean-x-1.0.3.tgz", + "integrity": "sha512-kQiMyJUgFprL8J+0CfgJuaSFKJMs3EvFe27/6aj/hVzVZT0HY4aA1QjPldLNxzBmjhLcapp7CctYHuD8QqtS3g==", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-integer-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-integer-x/-/to-integer-x-3.0.0.tgz", + "integrity": "sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w==", + "dev": true, + "requires": { + "is-finite-x": "3.0.4", + "is-nan-x": "1.0.3", + "math-sign-x": "3.0.0", + "to-number-x": "2.0.0" + } + }, + "to-number-x": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-number-x/-/to-number-x-2.0.0.tgz", + "integrity": "sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "nan-x": "1.0.2", + "parse-int-x": "2.0.0", + "to-primitive-x": "1.1.0", + "trim-x": "3.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-object-x": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/to-object-x/-/to-object-x-1.5.0.tgz", + "integrity": "sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "require-object-coercible-x": "1.4.3" + } + }, + "to-primitive-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/to-primitive-x/-/to-primitive-x-1.1.0.tgz", + "integrity": "sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2", + "is-date-object": "1.0.1", + "is-function-x": "3.3.0", + "is-nil-x": "1.4.2", + "is-primitive": "2.0.0", + "is-symbol": "1.0.1", + "require-object-coercible-x": "1.4.3", + "validate.io-undefined": "1.0.3" + } + }, + "to-property-key-x": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-property-key-x/-/to-property-key-x-2.0.2.tgz", + "integrity": "sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2", + "to-primitive-x": "1.1.0", + "to-string-x": "1.4.5" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "to-string-symbols-supported-x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-string-symbols-supported-x/-/to-string-symbols-supported-x-1.0.2.tgz", + "integrity": "sha512-3MRqhIhSNVDsVAk4M6WNcuBZrAQe54W13xrXX6RzxXS+pA4nj6DQ96RegQS5z9BSNyYbFsBsPvMVDIpP+a/5RA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "has-symbol-support-x": "1.4.2", + "is-symbol": "1.0.1" + } + }, + "to-string-tag-x": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/to-string-tag-x/-/to-string-tag-x-1.4.3.tgz", + "integrity": "sha512-5+0EZ6dOVt/XArXmkooxPzWxmOR081HM/uXitUow7h11WYg5pPo15uYqDWuqO7ZY+O3Atn/dG26wcJCK+mFevg==", + "dev": true, + "requires": { + "lodash.isnull": "3.0.0", + "validate.io-undefined": "1.0.3" + } + }, + "to-string-x": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/to-string-x/-/to-string-x-1.4.5.tgz", + "integrity": "sha512-5xzlZDyDa9BUWNjNzZzHgKQ95PnV7qjvEhbqpFaj1ixaHgfJXOFaa3xdMJ+WLYd4hhaMJaxt8Pt5uKaWXfruXA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "is-symbol": "1.0.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-left-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-left-x/-/trim-left-x-3.0.0.tgz", + "integrity": "sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "require-coercible-to-string-x": "1.0.2", + "white-space-x": "3.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "trim-right-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-right-x/-/trim-right-x-3.0.0.tgz", + "integrity": "sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA==", + "dev": true, + "requires": { + "cached-constructors-x": "1.0.2", + "require-coercible-to-string-x": "1.0.2", + "white-space-x": "3.0.1" + } + }, + "trim-x": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-x/-/trim-x-3.0.0.tgz", + "integrity": "sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw==", + "dev": true, + "requires": { + "trim-left-x": "3.0.0", + "trim-right-x": "3.0.0" + } + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "dev": true, + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz", + "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.4" + }, + "dependencies": { + "ajv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", + "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.2.0", + "ajv-keywords": "3.1.0" + } + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "dev": true, + "requires": { + "ip-regex": "1.0.3" + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.2.tgz", + "integrity": "sha512-8zlGw3EZDpC7iUDKy4yHCSqFwkBTeAK4h1QqDC3ST6rT7dzvu2ZuclExZN7zuXNEhQ3+2UBQgdca5eNNL06sBg==", + "dev": true, + "requires": { + "spdx-correct": "2.0.4", + "spdx-expression-parse": "3.0.0" + } + }, + "validate.io-undefined": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/validate.io-undefined/-/validate.io-undefined-1.0.3.tgz", + "integrity": "sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q=", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.3", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + }, + "dependencies": { + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + } + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "readable-stream": "2.3.4" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "3.5.3", + "glob-stream": "5.3.5", + "graceful-fs": "4.1.11", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "0.3.0", + "lazystream": "1.0.0", + "lodash.isequal": "4.5.0", + "merge-stream": "1.0.1", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "readable-stream": "2.3.4", + "strip-bom": "2.0.0", + "strip-bom-stream": "1.0.0", + "through2": "2.0.3", + "through2-filter": "2.0.0", + "vali-date": "1.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.4", + "xtend": "4.0.1" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "vue": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz", + "integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==", + "dev": true + }, + "vue-hot-reload-api": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", + "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==", + "dev": true + }, + "vue-loader": { + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.1.tgz", + "integrity": "sha512-v6PbKMGl/hWHGPxB2uGHsA66vusrXF66J/h1QiFXtU6z5zVSK8jq5xl95M1p3QNXmuEJKNP3nxoXfbgQNs7hJg==", + "dev": true, + "requires": { + "consolidate": "0.14.5", + "hash-sum": "1.0.2", + "loader-utils": "1.1.0", + "lru-cache": "4.1.1", + "postcss": "6.0.19", + "postcss-load-config": "1.2.0", + "postcss-selector-parser": "2.2.3", + "prettier": "1.11.0", + "resolve": "1.5.0", + "source-map": "0.6.1", + "vue-hot-reload-api": "2.3.0", + "vue-style-loader": "3.1.2", + "vue-template-es2015-compiler": "1.6.0" + } + }, + "vue-style-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", + "dev": true, + "requires": { + "hash-sum": "1.0.2", + "loader-utils": "1.1.0" + } + }, + "vue-template-compiler": { + "version": "2.5.13", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.13.tgz", + "integrity": "sha512-15HWSgIxrGUcV0v7QRen2Y3fQsbgxXwMvjT/5XKMO0ANmaCcNh7y2OeIDTAuSGeosjb9+E1Pn2PHZ61VQWEgBQ==", + "dev": true, + "requires": { + "de-indent": "1.0.2", + "he": "1.1.1" + } + }, + "vue-template-es2015-compiler": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", + "dev": true + }, + "ware": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "dev": true, + "requires": { + "wrap-fn": "0.1.5" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webpack": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", + "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", + "dev": true, + "requires": { + "acorn": "5.5.0", + "acorn-dynamic-import": "2.0.2", + "ajv": "6.2.0", + "ajv-keywords": "3.1.0", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "ajv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz", + "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + } + } + }, + "webpack-chunk-hash": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/webpack-chunk-hash/-/webpack-chunk-hash-0.4.0.tgz", + "integrity": "sha1-a0DDBw+8n/DP4P54HHF0r2x8FqQ=", + "dev": true + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz", + "integrity": "sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.2", + "compression": "1.7.2", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.2.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.2", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.2.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.9", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", + "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.1", + "to-regex": "3.0.2" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-merge": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "dev": true, + "requires": { + "lodash": "4.17.5" + } + }, + "webpack-notifier": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.5.1.tgz", + "integrity": "sha1-z19rmhcR+Alpu8T3vRXUDqexh2E=", + "dev": true, + "requires": { + "node-notifier": "5.2.1", + "object-assign": "4.1.1", + "strip-ansi": "3.0.1" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.10", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "white-space-x": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/white-space-x/-/white-space-x-3.0.1.tgz", + "integrity": "sha512-BwMFXQNPna/4RsNPOgldVYn+FkEv+lc3wUiFzuaW6Z2DH/oSk1UrRD6SBqDgWQO4JU+aBq3PVuPD9Vz0j7mh0w==", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "worker-farm": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.4.tgz", + "integrity": "sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w==", + "dev": true, + "requires": { + "errno": "0.1.7", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "dev": true, + "requires": { + "co": "3.1.0" + }, + "dependencies": { + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "fd-slicer": "1.0.1" + } + } + } +} diff --git a/package.json b/package.json index 5595f07..30f4a6f 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,18 @@ { "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", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, "devDependencies": { - "gulp": "^3.8.8", - "laravel-elixir": "*" + "cross-env": "^5.1", + "axios": "^0.17", + "bootstrap-sass": "^3.3.7", + "jquery": "^3.2", + "laravel-mix": "^1.0", + "lodash": "^4.17.4", + "vue": "^2.5.7" } } diff --git a/public/.htaccess b/public/.htaccess index 77827ae..b75525b 100755 --- a/public/.htaccess +++ b/public/.htaccess @@ -1,12 +1,18 @@ - Options -MultiViews + Options -MultiViews -Indexes RewriteEngine On - # Redirect Trailing Slashes... - RewriteRule ^(.*)/$ /$1 [L,R=301] + # 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 diff --git a/public/css/app.css b/public/css/app.css index 4709c0f..4b82c85 100755 --- a/public/css/app.css +++ b/public/css/app.css @@ -5,7 +5,7 @@ html { -webkit-text-size-adjust: 100%; } -.judul{ +.title{ margin-top: 1em; margin-bottom: 50px; padding-bottom: 1em; diff --git a/public/css/app1.css b/public/css/app1.css new file mode 100644 index 0000000..a261163 --- /dev/null +++ b/public/css/app1.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600); \ No newline at end of file diff --git a/public/css/font-awesome.css b/public/css/font-awesome.css new file mode 100644 index 0000000..bb0fe51 --- /dev/null +++ b/public/css/font-awesome.css @@ -0,0 +1,2178 @@ +/*! + * Font Awesome 4.6.1 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.1'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.1') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.1') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.1') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.1') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.1#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/public/css/grids-responsive.css b/public/css/grids-responsive.css new file mode 100644 index 0000000..dc9f771 --- /dev/null +++ b/public/css/grids-responsive.css @@ -0,0 +1,861 @@ +/*! +Pure v0.6.0 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yahoo/pure/blob/master/LICENSE.md +*/ +@media screen and (min-width: 35.5em) { + .pure-u-sm-1, + .pure-u-sm-1-1, + .pure-u-sm-1-2, + .pure-u-sm-1-3, + .pure-u-sm-2-3, + .pure-u-sm-1-4, + .pure-u-sm-3-4, + .pure-u-sm-1-5, + .pure-u-sm-2-5, + .pure-u-sm-3-5, + .pure-u-sm-4-5, + .pure-u-sm-5-5, + .pure-u-sm-1-6, + .pure-u-sm-5-6, + .pure-u-sm-1-8, + .pure-u-sm-3-8, + .pure-u-sm-5-8, + .pure-u-sm-7-8, + .pure-u-sm-1-12, + .pure-u-sm-5-12, + .pure-u-sm-7-12, + .pure-u-sm-11-12, + .pure-u-sm-1-24, + .pure-u-sm-2-24, + .pure-u-sm-3-24, + .pure-u-sm-4-24, + .pure-u-sm-5-24, + .pure-u-sm-6-24, + .pure-u-sm-7-24, + .pure-u-sm-8-24, + .pure-u-sm-9-24, + .pure-u-sm-10-24, + .pure-u-sm-11-24, + .pure-u-sm-12-24, + .pure-u-sm-13-24, + .pure-u-sm-14-24, + .pure-u-sm-15-24, + .pure-u-sm-16-24, + .pure-u-sm-17-24, + .pure-u-sm-18-24, + .pure-u-sm-19-24, + .pure-u-sm-20-24, + .pure-u-sm-21-24, + .pure-u-sm-22-24, + .pure-u-sm-23-24, + .pure-u-sm-24-24 { + display: inline-block; + *display: inline; + zoom: 1; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; + } + + .pure-u-sm-1-24 { + width: 4.1667%; + *width: 4.1357%; + } + + .pure-u-sm-1-12, + .pure-u-sm-2-24 { + width: 8.3333%; + *width: 8.3023%; + } + + .pure-u-sm-1-8, + .pure-u-sm-3-24 { + width: 12.5000%; + *width: 12.4690%; + } + + .pure-u-sm-1-6, + .pure-u-sm-4-24 { + width: 16.6667%; + *width: 16.6357%; + } + + .pure-u-sm-1-5 { + width: 20%; + *width: 19.9690%; + } + + .pure-u-sm-5-24 { + width: 20.8333%; + *width: 20.8023%; + } + + .pure-u-sm-1-4, + .pure-u-sm-6-24 { + width: 25%; + *width: 24.9690%; + } + + .pure-u-sm-7-24 { + width: 29.1667%; + *width: 29.1357%; + } + + .pure-u-sm-1-3, + .pure-u-sm-8-24 { + width: 33.3333%; + *width: 33.3023%; + } + + .pure-u-sm-3-8, + .pure-u-sm-9-24 { + width: 37.5000%; + *width: 37.4690%; + } + + .pure-u-sm-2-5 { + width: 40%; + *width: 39.9690%; + } + + .pure-u-sm-5-12, + .pure-u-sm-10-24 { + width: 41.6667%; + *width: 41.6357%; + } + + .pure-u-sm-11-24 { + width: 45.8333%; + *width: 45.8023%; + } + + .pure-u-sm-1-2, + .pure-u-sm-12-24 { + width: 50%; + *width: 49.9690%; + } + + .pure-u-sm-13-24 { + width: 54.1667%; + *width: 54.1357%; + } + + .pure-u-sm-7-12, + .pure-u-sm-14-24 { + width: 58.3333%; + *width: 58.3023%; + } + + .pure-u-sm-3-5 { + width: 60%; + *width: 59.9690%; + } + + .pure-u-sm-5-8, + .pure-u-sm-15-24 { + width: 62.5000%; + *width: 62.4690%; + } + + .pure-u-sm-2-3, + .pure-u-sm-16-24 { + width: 66.6667%; + *width: 66.6357%; + } + + .pure-u-sm-17-24 { + width: 70.8333%; + *width: 70.8023%; + } + + .pure-u-sm-3-4, + .pure-u-sm-18-24 { + width: 75%; + *width: 74.9690%; + } + + .pure-u-sm-19-24 { + width: 79.1667%; + *width: 79.1357%; + } + + .pure-u-sm-4-5 { + width: 80%; + *width: 79.9690%; + } + + .pure-u-sm-5-6, + .pure-u-sm-20-24 { + width: 83.3333%; + *width: 83.3023%; + } + + .pure-u-sm-7-8, + .pure-u-sm-21-24 { + width: 87.5000%; + *width: 87.4690%; + } + + .pure-u-sm-11-12, + .pure-u-sm-22-24 { + width: 91.6667%; + *width: 91.6357%; + } + + .pure-u-sm-23-24 { + width: 95.8333%; + *width: 95.8023%; + } + + .pure-u-sm-1, + .pure-u-sm-1-1, + .pure-u-sm-5-5, + .pure-u-sm-24-24 { + width: 100%; + } +} + +@media screen and (min-width: 48em) { + .pure-u-md-1, + .pure-u-md-1-1, + .pure-u-md-1-2, + .pure-u-md-1-3, + .pure-u-md-2-3, + .pure-u-md-1-4, + .pure-u-md-3-4, + .pure-u-md-1-5, + .pure-u-md-2-5, + .pure-u-md-3-5, + .pure-u-md-4-5, + .pure-u-md-5-5, + .pure-u-md-1-6, + .pure-u-md-5-6, + .pure-u-md-1-8, + .pure-u-md-3-8, + .pure-u-md-5-8, + .pure-u-md-7-8, + .pure-u-md-1-12, + .pure-u-md-5-12, + .pure-u-md-7-12, + .pure-u-md-11-12, + .pure-u-md-1-24, + .pure-u-md-2-24, + .pure-u-md-3-24, + .pure-u-md-4-24, + .pure-u-md-5-24, + .pure-u-md-6-24, + .pure-u-md-7-24, + .pure-u-md-8-24, + .pure-u-md-9-24, + .pure-u-md-10-24, + .pure-u-md-11-24, + .pure-u-md-12-24, + .pure-u-md-13-24, + .pure-u-md-14-24, + .pure-u-md-15-24, + .pure-u-md-16-24, + .pure-u-md-17-24, + .pure-u-md-18-24, + .pure-u-md-19-24, + .pure-u-md-20-24, + .pure-u-md-21-24, + .pure-u-md-22-24, + .pure-u-md-23-24, + .pure-u-md-24-24 { + display: inline-block; + *display: inline; + zoom: 1; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; + } + + .pure-u-md-1-24 { + width: 4.1667%; + *width: 4.1357%; + } + + .pure-u-md-1-12, + .pure-u-md-2-24 { + width: 8.3333%; + *width: 8.3023%; + } + + .pure-u-md-1-8, + .pure-u-md-3-24 { + width: 12.5000%; + *width: 12.4690%; + } + + .pure-u-md-1-6, + .pure-u-md-4-24 { + width: 16.6667%; + *width: 16.6357%; + } + + .pure-u-md-1-5 { + width: 20%; + *width: 19.9690%; + } + + .pure-u-md-5-24 { + width: 20.8333%; + *width: 20.8023%; + } + + .pure-u-md-1-4, + .pure-u-md-6-24 { + width: 25%; + *width: 24.9690%; + } + + .pure-u-md-7-24 { + width: 29.1667%; + *width: 29.1357%; + } + + .pure-u-md-1-3, + .pure-u-md-8-24 { + width: 33.3333%; + *width: 33.3023%; + } + + .pure-u-md-3-8, + .pure-u-md-9-24 { + width: 37.5000%; + *width: 37.4690%; + } + + .pure-u-md-2-5 { + width: 40%; + *width: 39.9690%; + } + + .pure-u-md-5-12, + .pure-u-md-10-24 { + width: 41.6667%; + *width: 41.6357%; + } + + .pure-u-md-11-24 { + width: 45.8333%; + *width: 45.8023%; + } + + .pure-u-md-1-2, + .pure-u-md-12-24 { + width: 50%; + *width: 49.9690%; + } + + .pure-u-md-13-24 { + width: 54.1667%; + *width: 54.1357%; + } + + .pure-u-md-7-12, + .pure-u-md-14-24 { + width: 58.3333%; + *width: 58.3023%; + } + + .pure-u-md-3-5 { + width: 60%; + *width: 59.9690%; + } + + .pure-u-md-5-8, + .pure-u-md-15-24 { + width: 62.5000%; + *width: 62.4690%; + } + + .pure-u-md-2-3, + .pure-u-md-16-24 { + width: 66.6667%; + *width: 66.6357%; + } + + .pure-u-md-17-24 { + width: 70.8333%; + *width: 70.8023%; + } + + .pure-u-md-3-4, + .pure-u-md-18-24 { + width: 75%; + *width: 74.9690%; + } + + .pure-u-md-19-24 { + width: 79.1667%; + *width: 79.1357%; + } + + .pure-u-md-4-5 { + width: 80%; + *width: 79.9690%; + } + + .pure-u-md-5-6, + .pure-u-md-20-24 { + width: 83.3333%; + *width: 83.3023%; + } + + .pure-u-md-7-8, + .pure-u-md-21-24 { + width: 87.5000%; + *width: 87.4690%; + } + + .pure-u-md-11-12, + .pure-u-md-22-24 { + width: 91.6667%; + *width: 91.6357%; + } + + .pure-u-md-23-24 { + width: 95.8333%; + *width: 95.8023%; + } + + .pure-u-md-1, + .pure-u-md-1-1, + .pure-u-md-5-5, + .pure-u-md-24-24 { + width: 100%; + } +} + +@media screen and (min-width: 64em) { + .pure-u-lg-1, + .pure-u-lg-1-1, + .pure-u-lg-1-2, + .pure-u-lg-1-3, + .pure-u-lg-2-3, + .pure-u-lg-1-4, + .pure-u-lg-3-4, + .pure-u-lg-1-5, + .pure-u-lg-2-5, + .pure-u-lg-3-5, + .pure-u-lg-4-5, + .pure-u-lg-5-5, + .pure-u-lg-1-6, + .pure-u-lg-5-6, + .pure-u-lg-1-8, + .pure-u-lg-3-8, + .pure-u-lg-5-8, + .pure-u-lg-7-8, + .pure-u-lg-1-12, + .pure-u-lg-5-12, + .pure-u-lg-7-12, + .pure-u-lg-11-12, + .pure-u-lg-1-24, + .pure-u-lg-2-24, + .pure-u-lg-3-24, + .pure-u-lg-4-24, + .pure-u-lg-5-24, + .pure-u-lg-6-24, + .pure-u-lg-7-24, + .pure-u-lg-8-24, + .pure-u-lg-9-24, + .pure-u-lg-10-24, + .pure-u-lg-11-24, + .pure-u-lg-12-24, + .pure-u-lg-13-24, + .pure-u-lg-14-24, + .pure-u-lg-15-24, + .pure-u-lg-16-24, + .pure-u-lg-17-24, + .pure-u-lg-18-24, + .pure-u-lg-19-24, + .pure-u-lg-20-24, + .pure-u-lg-21-24, + .pure-u-lg-22-24, + .pure-u-lg-23-24, + .pure-u-lg-24-24 { + display: inline-block; + *display: inline; + zoom: 1; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; + } + + .pure-u-lg-1-24 { + width: 4.1667%; + *width: 4.1357%; + } + + .pure-u-lg-1-12, + .pure-u-lg-2-24 { + width: 8.3333%; + *width: 8.3023%; + } + + .pure-u-lg-1-8, + .pure-u-lg-3-24 { + width: 12.5000%; + *width: 12.4690%; + } + + .pure-u-lg-1-6, + .pure-u-lg-4-24 { + width: 16.6667%; + *width: 16.6357%; + } + + .pure-u-lg-1-5 { + width: 20%; + *width: 19.9690%; + } + + .pure-u-lg-5-24 { + width: 20.8333%; + *width: 20.8023%; + } + + .pure-u-lg-1-4, + .pure-u-lg-6-24 { + width: 25%; + *width: 24.9690%; + } + + .pure-u-lg-7-24 { + width: 29.1667%; + *width: 29.1357%; + } + + .pure-u-lg-1-3, + .pure-u-lg-8-24 { + width: 33.3333%; + *width: 33.3023%; + } + + .pure-u-lg-3-8, + .pure-u-lg-9-24 { + width: 37.5000%; + *width: 37.4690%; + } + + .pure-u-lg-2-5 { + width: 40%; + *width: 39.9690%; + } + + .pure-u-lg-5-12, + .pure-u-lg-10-24 { + width: 41.6667%; + *width: 41.6357%; + } + + .pure-u-lg-11-24 { + width: 45.8333%; + *width: 45.8023%; + } + + .pure-u-lg-1-2, + .pure-u-lg-12-24 { + width: 50%; + *width: 49.9690%; + } + + .pure-u-lg-13-24 { + width: 54.1667%; + *width: 54.1357%; + } + + .pure-u-lg-7-12, + .pure-u-lg-14-24 { + width: 58.3333%; + *width: 58.3023%; + } + + .pure-u-lg-3-5 { + width: 60%; + *width: 59.9690%; + } + + .pure-u-lg-5-8, + .pure-u-lg-15-24 { + width: 62.5000%; + *width: 62.4690%; + } + + .pure-u-lg-2-3, + .pure-u-lg-16-24 { + width: 66.6667%; + *width: 66.6357%; + } + + .pure-u-lg-17-24 { + width: 70.8333%; + *width: 70.8023%; + } + + .pure-u-lg-3-4, + .pure-u-lg-18-24 { + width: 75%; + *width: 74.9690%; + } + + .pure-u-lg-19-24 { + width: 79.1667%; + *width: 79.1357%; + } + + .pure-u-lg-4-5 { + width: 80%; + *width: 79.9690%; + } + + .pure-u-lg-5-6, + .pure-u-lg-20-24 { + width: 83.3333%; + *width: 83.3023%; + } + + .pure-u-lg-7-8, + .pure-u-lg-21-24 { + width: 87.5000%; + *width: 87.4690%; + } + + .pure-u-lg-11-12, + .pure-u-lg-22-24 { + width: 91.6667%; + *width: 91.6357%; + } + + .pure-u-lg-23-24 { + width: 95.8333%; + *width: 95.8023%; + } + + .pure-u-lg-1, + .pure-u-lg-1-1, + .pure-u-lg-5-5, + .pure-u-lg-24-24 { + width: 100%; + } +} + +@media screen and (min-width: 80em) { + .pure-u-xl-1, + .pure-u-xl-1-1, + .pure-u-xl-1-2, + .pure-u-xl-1-3, + .pure-u-xl-2-3, + .pure-u-xl-1-4, + .pure-u-xl-3-4, + .pure-u-xl-1-5, + .pure-u-xl-2-5, + .pure-u-xl-3-5, + .pure-u-xl-4-5, + .pure-u-xl-5-5, + .pure-u-xl-1-6, + .pure-u-xl-5-6, + .pure-u-xl-1-8, + .pure-u-xl-3-8, + .pure-u-xl-5-8, + .pure-u-xl-7-8, + .pure-u-xl-1-12, + .pure-u-xl-5-12, + .pure-u-xl-7-12, + .pure-u-xl-11-12, + .pure-u-xl-1-24, + .pure-u-xl-2-24, + .pure-u-xl-3-24, + .pure-u-xl-4-24, + .pure-u-xl-5-24, + .pure-u-xl-6-24, + .pure-u-xl-7-24, + .pure-u-xl-8-24, + .pure-u-xl-9-24, + .pure-u-xl-10-24, + .pure-u-xl-11-24, + .pure-u-xl-12-24, + .pure-u-xl-13-24, + .pure-u-xl-14-24, + .pure-u-xl-15-24, + .pure-u-xl-16-24, + .pure-u-xl-17-24, + .pure-u-xl-18-24, + .pure-u-xl-19-24, + .pure-u-xl-20-24, + .pure-u-xl-21-24, + .pure-u-xl-22-24, + .pure-u-xl-23-24, + .pure-u-xl-24-24 { + display: inline-block; + *display: inline; + zoom: 1; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; + } + + .pure-u-xl-1-24 { + width: 4.1667%; + *width: 4.1357%; + } + + .pure-u-xl-1-12, + .pure-u-xl-2-24 { + width: 8.3333%; + *width: 8.3023%; + } + + .pure-u-xl-1-8, + .pure-u-xl-3-24 { + width: 12.5000%; + *width: 12.4690%; + } + + .pure-u-xl-1-6, + .pure-u-xl-4-24 { + width: 16.6667%; + *width: 16.6357%; + } + + .pure-u-xl-1-5 { + width: 20%; + *width: 19.9690%; + } + + .pure-u-xl-5-24 { + width: 20.8333%; + *width: 20.8023%; + } + + .pure-u-xl-1-4, + .pure-u-xl-6-24 { + width: 25%; + *width: 24.9690%; + } + + .pure-u-xl-7-24 { + width: 29.1667%; + *width: 29.1357%; + } + + .pure-u-xl-1-3, + .pure-u-xl-8-24 { + width: 33.3333%; + *width: 33.3023%; + } + + .pure-u-xl-3-8, + .pure-u-xl-9-24 { + width: 37.5000%; + *width: 37.4690%; + } + + .pure-u-xl-2-5 { + width: 40%; + *width: 39.9690%; + } + + .pure-u-xl-5-12, + .pure-u-xl-10-24 { + width: 41.6667%; + *width: 41.6357%; + } + + .pure-u-xl-11-24 { + width: 45.8333%; + *width: 45.8023%; + } + + .pure-u-xl-1-2, + .pure-u-xl-12-24 { + width: 50%; + *width: 49.9690%; + } + + .pure-u-xl-13-24 { + width: 54.1667%; + *width: 54.1357%; + } + + .pure-u-xl-7-12, + .pure-u-xl-14-24 { + width: 58.3333%; + *width: 58.3023%; + } + + .pure-u-xl-3-5 { + width: 60%; + *width: 59.9690%; + } + + .pure-u-xl-5-8, + .pure-u-xl-15-24 { + width: 62.5000%; + *width: 62.4690%; + } + + .pure-u-xl-2-3, + .pure-u-xl-16-24 { + width: 66.6667%; + *width: 66.6357%; + } + + .pure-u-xl-17-24 { + width: 70.8333%; + *width: 70.8023%; + } + + .pure-u-xl-3-4, + .pure-u-xl-18-24 { + width: 75%; + *width: 74.9690%; + } + + .pure-u-xl-19-24 { + width: 79.1667%; + *width: 79.1357%; + } + + .pure-u-xl-4-5 { + width: 80%; + *width: 79.9690%; + } + + .pure-u-xl-5-6, + .pure-u-xl-20-24 { + width: 83.3333%; + *width: 83.3023%; + } + + .pure-u-xl-7-8, + .pure-u-xl-21-24 { + width: 87.5000%; + *width: 87.4690%; + } + + .pure-u-xl-11-12, + .pure-u-xl-22-24 { + width: 91.6667%; + *width: 91.6357%; + } + + .pure-u-xl-23-24 { + width: 95.8333%; + *width: 95.8023%; + } + + .pure-u-xl-1, + .pure-u-xl-1-1, + .pure-u-xl-5-5, + .pure-u-xl-24-24 { + width: 100%; + } +} \ No newline at end of file diff --git a/public/css/page.css b/public/css/page.css new file mode 100644 index 0000000..a00dd76 --- /dev/null +++ b/public/css/page.css @@ -0,0 +1,374 @@ +/* Start Reset CSS */ +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strong, sub, sup, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +h1, h2, h3, h4, h5, h6 { + /*font-family: "Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;*/ + font-family: 'Open Sans', sans-serif; + font-weight: normal; + font-style: normal; + color: #222; + text-rendering: optimizeLegibility; + margin-top: 0.2rem; + margin-bottom: 0.5rem; + line-height: 1.4; +} +h4 { + font-size: 1.1875rem; +} + +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; + margin: 2px; +} + +html, body +{ + font-family:"Raleway", sans-serif; + font-size: 14px; + line-height: 1.42857143; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin:0; + padding:0; + height:100%; + width:100%; +} +h1, h2, h3, h4, h5, h6, pre, code, address, caption, cite, code, em, th, a, button, input, select, textarea, .pure-g [class *= "pure-u"], .pure-g-r [class *= "pure-u"] { + font-weight: normal; + font-style: normal; + /*font-family: Arial, Helvetica, sans-serif;*/ + font-family: 'Open Sans', sans-serif; +} + +fieldset, img, hr { + border: none; + outline: none; +} + +caption, th { + text-align: left; +} + +td { + vertical-align: top; +} + +a { + color: #000; +} + +h1 { + font-size: 1.4em; + font-weight: bold; +} + +.noselect { + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Chrome/Safari/Opera */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; /* Non-prefixed version, currently not supported by any browser */ +} +/* End Reset CSS */ + +.fontface1 +{ + font-family: "Raleway", sans-serif; + font-size: 26px; + color: #99cc00; +} + +.title{ + margin-top: 1em; + margin-bottom: 50px; + padding-bottom: 1em; + text-align: center; + line-height: 1; + border-bottom: 1px solid red; + font-family: "Marvel", sans-serif; + } + + .marvel{ + color: #E41030; + font-family: "Raleway", sans-serif; + font-weight: normal; + } + +/*header, footer, nav {*/ +header, footer { + display: block; + position: absolute; + left: 0; + right: 0; + z-index: 150; +} +nav{position:relative;} + +footer{ + text-align:center; +} + +header .fm_title_bar { + display: block; + text-decoration: none; + white-space: nowrap; + margin: 0 auto; +} + +nav .div_nav { + height: 100%; +} + +.fm_container { + margin: 10px; +} + +header, footer { + background-color: #222; + color: white; +} + +footer { + bottom: 0; + height: 1.5em; +} + +.container { + display: block; + position: absolute; + overflow: auto; + left: 0; + right: 0; +} +.maincontent { padding: 4em; } + + + + + +.is-center { + text-align: center; +} +.content-subhead { + color: #1f8dd6; +} +.l-box-lrg { + border: none; + border-radius:4px; + text-align: justify; + font-size: 0.9em; +} +.l-box { + border: none; + margin:5px; + text-align: justify; + font-size: 0.9em; +} +.add { + text-align: right; + margin-top: 1.6em; +} + + + + +/* TABLE */ +/*a { color: #4183c4; text-decoration: none; } +a:hover { text-decoration: none; }*/ +.pure-button:hover { text-decoration: none; } +/*table { width: 100%; margin: 2em 0; }*/ +.pure-table a { color: #333; text-decoration: none;} +.pure-table a:hover { text-decoration: none; color: #4183c4; } +.pure-table { border: none; } +.pure-table td, .pure-table th { padding: 0.8em; border: none; border-bottom: 1px solid #f6f6f6; text-align: left; } +.pure-table thead { background-color:#F2F9EF } +.pure-table th { font-weight: 300; } + +table td .view:before { font-family: FontAwesome; top: 0; content: "\f05a";} +table td .edit:before { font-family: FontAwesome; top: 0; content: "\f044";} +table td .delete:before { font-family: FontAwesome; top: 0; content: "\f014"; } +table .action { width: 1em; } + +.pure-form .checkboxlist > label, .pure-form .checkboxlist > .field-validation-error, .pure-form .checkboxlist > i.fa-info-circle { vertical-align: top !important; } +.pure-form .checkboxlist ul { max-height: 8.5em; overflow: auto; width: 17em; display: inline-block; padding: 0; margin: 0 0 1em 0; } +.pure-form .checkboxlist ul li { margin-bottom: 3px; list-style: none; } +.pure-form .checkboxlist ul li label { width: 14em; } +.pure-form em, .pure-form i.fa-info-circle { color: silver; padding-left: 0.3em; } +.pure-form .pure-button { margin-right: 1em; } + +.pure-form.detail span { vertical-align: middle; line-height: 2em; } +.pure-form.detail label { color: silver; } +textarea.medium, select.medium { width: 25em; } +textarea.large, input.large { width: 40em;height: 17em; } +div.pure-control-group.checkboxlist>span { display: inline-block; } + + + +.button-success, +.button-error, +.button-warning, +.button-secondary { + color: white; + border-radius: 4px; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} + +.button-success { + background: rgb(28, 184, 65); /* this is a green */ +} + +.button-error { + background: rgb(202, 60, 60); /* this is a maroon */ +} + +.button-warning { + background: rgb(223, 117, 20); /* this is an orange */ +} + +.button-secondary { + background: rgb(66, 184, 221); /* this is a light blue */ +} + + + +/* .field-validation-error { color: #a94442; margin-left: 0.7em; } +.field-validation-valid { display: none; } +.input-validation-error { border: 1px solid #a94442 !important; background-color: #fdf7f7; } */ + +.validation-summary-errors, .summary-error { border-left: 3px solid #d9534f; background: #fdf7f7; padding: 1em; margin-bottom: 2em; } +.validation-summary-errors ul { margin: 0.75em 1em; } +.validation-summary-valid { display: none; } + +.summary-success { border-left: 3px solid #009900; background: #F2F9EF; padding: 1em; margin-bottom: 2em; } + + + +footer .wrapper{ + font-size: 12px; + color: white; + overflow: hidden; +} +footer .wrapper a{ + color: #dee5eb; + background-color: transparent; + text-decoration: none ; +} +footer .wrapper a:hover{ + text-decoration: underline; +} +#secondary-nav li{ + float: left; + margin: 0px 9px; + /* background: url("../img/theme/footer-separator.jpg") no-repeat right center; */ +} +#secondary-nav li.first{ + padding-left: 0; +} +#secondary-nav li.last{ + background-image: none; +} + + +/* .maincontent .wrapper{ + font-size: 0.8em; +} */ +.wrapper, +.messages, +#page-footer .wrapper{ + max-width: 960px; + min-width: 800px; + padding: 0 20px; + margin: auto; +} + + + + +#search_results { + float: left; + width: 100%; +} + +.result_box dt { + background: #f3f6f8 no-repeat 24px 4px; + padding: 4px 8px 0 41px; +} + +.results_title img { + float: left; + cursor: pointer; + margin: -14px 0 0 -50px; + vertical-align: bottom; +} + +dl.result_box { + border-top: 1px solid #e2e6e9; +} + +.result_box .results_title { + background-image: url(../img/theme/icon-title.gif); +} + +.results_title a { + font-weight: bold; +} + +.result_box .results_author { + padding-bottom: 5px; + background-image: url(../img/theme/icon-author.gif); +} + +.results_seriesnumber + .results_title { + padding-right: 75px !important; +} + +.result_box .results_seriesnumber { + float: right; + text-align: right; + min-width: 50px; + padding: 4px 8px 0 12px; + color: black; +} + +.result_box dd { + padding: 3px 6px; + margin: 0; + line-height: 1.5em; +} diff --git a/public/css/pure.css b/public/css/pure.css new file mode 100644 index 0000000..a07d74c --- /dev/null +++ b/public/css/pure.css @@ -0,0 +1,1475 @@ +/*! +Pure v0.6.0 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yahoo/pure/blob/master/LICENSE.md +*/ +/*! +normalize.css v^3.0 | MIT License | git.io/normalize +Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +/*csslint important:false*/ + +/* ========================================================================== + Pure Base Extras + ========================================================================== */ + +/** + * Extra rules that Pure adds on top of Normalize.css + */ + +/** + * Always hide an element when it has the `hidden` HTML attribute. + */ + +.hidden, +[hidden] { + display: none !important; +} + +/** + * Add this class to an image to make it fit within it's fluid parent wrapper while maintaining + * aspect ratio. + */ +.pure-img { + max-width: 100%; + height: auto; + display: block; +} + +/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/ + +.pure-g { + letter-spacing: -0.31em; /* Webkit: collapse white-space between units */ + *letter-spacing: normal; /* reset IE < 8 */ + *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */ + text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */ + + /* + Sets the font stack to fonts known to work properly with the above letter + and word spacings. See: https://github.com/yahoo/pure/issues/41/ + + The following font stack makes Pure Grids work on all known environments. + + * FreeSans: Ships with many Linux distros, including Ubuntu + + * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and + Arial to get picked up by the browser, even though neither is available + in Chrome OS. + + * Droid Sans: Ships with all versions of Android. + + * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows. + */ + font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif; + + /* + Use flexbox when possible to avoid `letter-spacing` side-effects. + + NOTE: Firefox (as of 25) does not currently support flex-wrap, so the + `-moz-` prefix version is omitted. + */ + + display: -webkit-flex; + -webkit-flex-flow: row wrap; + + /* IE10 uses display: flexbox */ + display: -ms-flexbox; + -ms-flex-flow: row wrap; + + /* Prevents distributing space between rows */ + -ms-align-content: flex-start; + -webkit-align-content: flex-start; + align-content: flex-start; +} + +/* Opera as of 12 on Windows needs word-spacing. + The ".opera-only" selector is used to prevent actual prefocus styling + and is not required in markup. +*/ +.opera-only :-o-prefocus, +.pure-g { + word-spacing: -0.43em; +} + +.pure-u { + display: inline-block; + *display: inline; /* IE < 8: fake inline-block */ + zoom: 1; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} + +/* +Resets the font family back to the OS/browser's default sans-serif font, +this the same font stack that Normalize.css sets for the `body`. +*/ +.pure-g [class *= "pure-u"] { + font-family: sans-serif; +} + +.pure-u-1, +.pure-u-1-1, +.pure-u-1-2, +.pure-u-1-3, +.pure-u-2-3, +.pure-u-1-4, +.pure-u-3-4, +.pure-u-1-5, +.pure-u-2-5, +.pure-u-3-5, +.pure-u-4-5, +.pure-u-5-5, +.pure-u-1-6, +.pure-u-5-6, +.pure-u-1-8, +.pure-u-3-8, +.pure-u-5-8, +.pure-u-7-8, +.pure-u-1-12, +.pure-u-5-12, +.pure-u-7-12, +.pure-u-11-12, +.pure-u-1-24, +.pure-u-2-24, +.pure-u-3-24, +.pure-u-4-24, +.pure-u-5-24, +.pure-u-6-24, +.pure-u-7-24, +.pure-u-8-24, +.pure-u-9-24, +.pure-u-10-24, +.pure-u-11-24, +.pure-u-12-24, +.pure-u-13-24, +.pure-u-14-24, +.pure-u-15-24, +.pure-u-16-24, +.pure-u-17-24, +.pure-u-18-24, +.pure-u-19-24, +.pure-u-20-24, +.pure-u-21-24, +.pure-u-22-24, +.pure-u-23-24, +.pure-u-24-24 { + display: inline-block; + *display: inline; + zoom: 1; + letter-spacing: normal; + word-spacing: normal; + vertical-align: top; + text-rendering: auto; +} + +.pure-u-1-24 { + width: 4.1667%; + *width: 4.1357%; +} + +.pure-u-1-12, +.pure-u-2-24 { + width: 8.3333%; + *width: 8.3023%; +} + +.pure-u-1-8, +.pure-u-3-24 { + width: 12.5000%; + *width: 12.4690%; +} + +.pure-u-1-6, +.pure-u-4-24 { + width: 16.6667%; + *width: 16.6357%; +} + +.pure-u-1-5 { + width: 20%; + *width: 19.9690%; +} + +.pure-u-5-24 { + width: 20.8333%; + *width: 20.8023%; +} + +.pure-u-1-4, +.pure-u-6-24 { + width: 25%; + *width: 24.9690%; +} + +.pure-u-7-24 { + width: 29.1667%; + *width: 29.1357%; +} + +.pure-u-1-3, +.pure-u-8-24 { + width: 33.3333%; + *width: 33.3023%; +} + +.pure-u-3-8, +.pure-u-9-24 { + width: 37.5000%; + *width: 37.4690%; +} + +.pure-u-2-5 { + width: 40%; + *width: 39.9690%; +} + +.pure-u-5-12, +.pure-u-10-24 { + width: 41.6667%; + *width: 41.6357%; +} + +.pure-u-11-24 { + width: 45.8333%; + *width: 45.8023%; +} + +.pure-u-1-2, +.pure-u-12-24 { + width: 50%; + *width: 49.9690%; +} + +.pure-u-13-24 { + width: 54.1667%; + *width: 54.1357%; +} + +.pure-u-7-12, +.pure-u-14-24 { + width: 58.3333%; + *width: 58.3023%; +} + +.pure-u-3-5 { + width: 60%; + *width: 59.9690%; +} + +.pure-u-5-8, +.pure-u-15-24 { + width: 62.5000%; + *width: 62.4690%; +} + +.pure-u-2-3, +.pure-u-16-24 { + width: 66.6667%; + *width: 66.6357%; +} + +.pure-u-17-24 { + width: 70.8333%; + *width: 70.8023%; +} + +.pure-u-3-4, +.pure-u-18-24 { + width: 75%; + *width: 74.9690%; +} + +.pure-u-19-24 { + width: 79.1667%; + *width: 79.1357%; +} + +.pure-u-4-5 { + width: 80%; + *width: 79.9690%; +} + +.pure-u-5-6, +.pure-u-20-24 { + width: 83.3333%; + *width: 83.3023%; +} + +.pure-u-7-8, +.pure-u-21-24 { + width: 87.5000%; + *width: 87.4690%; +} + +.pure-u-11-12, +.pure-u-22-24 { + width: 91.6667%; + *width: 91.6357%; +} + +.pure-u-23-24 { + width: 95.8333%; + *width: 95.8023%; +} + +.pure-u-1, +.pure-u-1-1, +.pure-u-5-5, +.pure-u-24-24 { + width: 100%; +} +.pure-button { + /* Structure */ + display: inline-block; + zoom: 1; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + text-align: center; + cursor: pointer; + -webkit-user-drag: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +/* Firefox: Get rid of the inner focus border */ +.pure-button::-moz-focus-inner { + padding: 0; + border: 0; +} + +/*csslint outline-none:false*/ + +.pure-button { + font-family: inherit; + font-size: 100%; + padding: 0.5em 1em; + color: #444; /* rgba not supported (IE 8) */ + color: rgba(0, 0, 0, 0.80); /* rgba supported */ + border: 1px solid #999; /*IE 6/7/8*/ + border: none rgba(0, 0, 0, 0); /*IE9 + everything else*/ + background-color: #E6E6E6; + text-decoration: none; + border-radius: 2px; +} + +.pure-button-hover, +.pure-button:hover, +.pure-button:focus { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000',GradientType=0); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(transparent), color-stop(40%, rgba(0,0,0, 0.05)), to(rgba(0,0,0, 0.10))); + background-image: -webkit-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); + background-image: -moz-linear-gradient(top, rgba(0,0,0, 0.05) 0%, rgba(0,0,0, 0.10)); + background-image: -o-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); + background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); +} +.pure-button:focus { + outline: 0; +} +.pure-button-active, +.pure-button:active { + box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset; + border-color: #000\9; +} + +.pure-button[disabled], +.pure-button-disabled, +.pure-button-disabled:hover, +.pure-button-disabled:focus, +.pure-button-disabled:active { + border: none; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + filter: alpha(opacity=40); + -khtml-opacity: 0.40; + -moz-opacity: 0.40; + opacity: 0.40; + cursor: not-allowed; + box-shadow: none; +} + +.pure-button-hidden { + display: none; +} + +/* Firefox: Get rid of the inner focus border */ +.pure-button::-moz-focus-inner{ + padding: 0; + border: 0; +} + +.pure-button-primary, +.pure-button-selected, +a.pure-button-primary, +a.pure-button-selected { + background-color: rgb(0, 120, 231); + color: #fff; +} + +/*csslint box-model:false*/ +/* +Box-model set to false because we're setting a height on select elements, which +also have border and padding. This is done because some browsers don't render +the padding. We explicitly set the box-model for select elements to border-box, +so we can ignore the csslint warning. +*/ + +.pure-form input[type="text"], +.pure-form input[type="password"], +.pure-form input[type="email"], +.pure-form input[type="url"], +.pure-form input[type="date"], +.pure-form input[type="month"], +.pure-form input[type="time"], +.pure-form input[type="datetime"], +.pure-form input[type="datetime-local"], +.pure-form input[type="week"], +.pure-form input[type="number"], +.pure-form input[type="search"], +.pure-form input[type="tel"], +.pure-form input[type="color"], +.pure-form select, +.pure-form textarea { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + vertical-align: middle; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form input:not([type]) { + padding: 0.5em 0.6em; + display: inline-block; + border: 1px solid #ccc; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 4px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + + +/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */ +/* May be able to remove this tweak as color inputs become more standardized across browsers. */ +.pure-form input[type="color"] { + padding: 0.2em 0.5em; +} + + +.pure-form input[type="text"]:focus, +.pure-form input[type="password"]:focus, +.pure-form input[type="email"]:focus, +.pure-form input[type="url"]:focus, +.pure-form input[type="date"]:focus, +.pure-form input[type="month"]:focus, +.pure-form input[type="time"]:focus, +.pure-form input[type="datetime"]:focus, +.pure-form input[type="datetime-local"]:focus, +.pure-form input[type="week"]:focus, +.pure-form input[type="number"]:focus, +.pure-form input[type="search"]:focus, +.pure-form input[type="tel"]:focus, +.pure-form input[type="color"]:focus, +.pure-form select:focus, +.pure-form textarea:focus { + outline: 0; + border-color: #129FEA; +} + +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form input:not([type]):focus { + outline: 0; + border-color: #129FEA; +} + +.pure-form input[type="file"]:focus, +.pure-form input[type="radio"]:focus, +.pure-form input[type="checkbox"]:focus { + outline: thin solid #129FEA; + outline: 1px auto #129FEA; +} +.pure-form .pure-checkbox, +.pure-form .pure-radio { + margin: 0.5em 0; + display: block; +} + +.pure-form input[type="text"][disabled], +.pure-form input[type="password"][disabled], +.pure-form input[type="email"][disabled], +.pure-form input[type="url"][disabled], +.pure-form input[type="date"][disabled], +.pure-form input[type="month"][disabled], +.pure-form input[type="time"][disabled], +.pure-form input[type="datetime"][disabled], +.pure-form input[type="datetime-local"][disabled], +.pure-form input[type="week"][disabled], +.pure-form input[type="number"][disabled], +.pure-form input[type="search"][disabled], +.pure-form input[type="tel"][disabled], +.pure-form input[type="color"][disabled], +.pure-form select[disabled], +.pure-form textarea[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} + +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form input:not([type])[disabled] { + cursor: not-allowed; + background-color: #eaeded; + color: #cad2d3; +} +.pure-form input[readonly], +.pure-form select[readonly], +.pure-form textarea[readonly] { + background-color: #eee; /* menu hover bg color */ + color: #777; /* menu text color */ + border-color: #ccc; +} + +.pure-form input:focus:invalid, +.pure-form textarea:focus:invalid, +.pure-form select:focus:invalid { + color: #b94a48; + border-color: #e9322d; +} +.pure-form input[type="file"]:focus:invalid:focus, +.pure-form input[type="radio"]:focus:invalid:focus, +.pure-form input[type="checkbox"]:focus:invalid:focus { + outline-color: #e9322d; +} +.pure-form select { + /* Normalizes the height; padding is not sufficient. */ + height: 2.25em; + border: 1px solid #ccc; + background-color: white; +} +.pure-form select[multiple] { + height: auto; +} +.pure-form label { + margin: 0.5em 0 0.2em; +} +.pure-form fieldset { + margin: 0; + padding: 0.35em 0 0.75em; + border: 0; +} +.pure-form legend { + display: block; + width: 100%; + padding: 0.3em 0; + margin-bottom: 0.3em; + color: #333; + border-bottom: 1px solid #e5e5e5; +} + +.pure-form-stacked input[type="text"], +.pure-form-stacked input[type="password"], +.pure-form-stacked input[type="email"], +.pure-form-stacked input[type="url"], +.pure-form-stacked input[type="date"], +.pure-form-stacked input[type="month"], +.pure-form-stacked input[type="time"], +.pure-form-stacked input[type="datetime"], +.pure-form-stacked input[type="datetime-local"], +.pure-form-stacked input[type="week"], +.pure-form-stacked input[type="number"], +.pure-form-stacked input[type="search"], +.pure-form-stacked input[type="tel"], +.pure-form-stacked input[type="color"], +.pure-form-stacked input[type="file"], +.pure-form-stacked select, +.pure-form-stacked label, +.pure-form-stacked textarea { + display: block; + margin: 0.25em 0; +} + +/* +Need to separate out the :not() selector from the rest of the CSS 2.1 selectors +since IE8 won't execute CSS that contains a CSS3 selector. +*/ +.pure-form-stacked input:not([type]) { + display: block; + margin: 0.25em 0; +} +.pure-form-aligned input, +.pure-form-aligned textarea, +.pure-form-aligned select, +/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ +.pure-form-aligned .pure-help-inline, +.pure-form-message-inline { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; +} +.pure-form-aligned textarea { + vertical-align: top; +} + +/* Aligned Forms */ +.pure-form-aligned .pure-control-group { + margin-bottom: 0.5em; +} +.pure-form-aligned .pure-control-group label { + text-align: right; + display: inline-block; + vertical-align: middle; + width: 10em; + margin: 0 1em 0 0; +} +.pure-form-aligned .pure-controls { + margin: 1.5em 0 0 11em; +} + +/* Rounded Inputs */ +.pure-form input.pure-input-rounded, +.pure-form .pure-input-rounded { + border-radius: 2em; + padding: 0.5em 1em; +} + +/* Grouped Inputs */ +.pure-form .pure-group fieldset { + margin-bottom: 10px; +} +.pure-form .pure-group input, +.pure-form .pure-group textarea { + display: block; + padding: 10px; + margin: 0 0 -1px; + border-radius: 0; + position: relative; + top: -1px; +} +.pure-form .pure-group input:focus, +.pure-form .pure-group textarea:focus { + z-index: 3; +} +.pure-form .pure-group input:first-child, +.pure-form .pure-group textarea:first-child { + top: 1px; + border-radius: 4px 4px 0 0; + margin: 0; +} +.pure-form .pure-group input:first-child:last-child, +.pure-form .pure-group textarea:first-child:last-child { + top: 1px; + border-radius: 4px; + margin: 0; +} +.pure-form .pure-group input:last-child, +.pure-form .pure-group textarea:last-child { + top: -2px; + border-radius: 0 0 4px 4px; + margin: 0; +} +.pure-form .pure-group button { + margin: 0.35em 0; +} + +.pure-form .pure-input-1 { + width: 100%; +} +.pure-form .pure-input-2-3 { + width: 66%; +} +.pure-form .pure-input-1-2 { + width: 50%; +} +.pure-form .pure-input-1-3 { + width: 33%; +} +.pure-form .pure-input-1-4 { + width: 25%; +} + +/* Inline help for forms */ +/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ +.pure-form .pure-help-inline, +.pure-form-message-inline { + display: inline-block; + padding-left: 0.3em; + color: #666; + vertical-align: middle; + font-size: 0.875em; +} + +/* Block help for forms */ +.pure-form-message { + display: block; + color: #666; + font-size: 0.875em; +} + +@media only screen and (max-width : 480px) { + .pure-form button[type="submit"] { + margin: 0.7em 0 0; + } + + .pure-form input:not([type]), + .pure-form input[type="text"], + .pure-form input[type="password"], + .pure-form input[type="email"], + .pure-form input[type="url"], + .pure-form input[type="date"], + .pure-form input[type="month"], + .pure-form input[type="time"], + .pure-form input[type="datetime"], + .pure-form input[type="datetime-local"], + .pure-form input[type="week"], + .pure-form input[type="number"], + .pure-form input[type="search"], + .pure-form input[type="tel"], + .pure-form input[type="color"], + .pure-form label { + margin-bottom: 0.3em; + display: block; + } + + .pure-group input:not([type]), + .pure-group input[type="text"], + .pure-group input[type="password"], + .pure-group input[type="email"], + .pure-group input[type="url"], + .pure-group input[type="date"], + .pure-group input[type="month"], + .pure-group input[type="time"], + .pure-group input[type="datetime"], + .pure-group input[type="datetime-local"], + .pure-group input[type="week"], + .pure-group input[type="number"], + .pure-group input[type="search"], + .pure-group input[type="tel"], + .pure-group input[type="color"] { + margin-bottom: 0; + } + + .pure-form-aligned .pure-control-group label { + margin-bottom: 0.3em; + text-align: left; + display: block; + width: 100%; + } + + .pure-form-aligned .pure-controls { + margin: 1.5em 0 0 0; + } + + /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ + .pure-form .pure-help-inline, + .pure-form-message-inline, + .pure-form-message { + display: block; + font-size: 0.75em; + /* Increased bottom padding to make it group with its related input element. */ + padding: 0.2em 0 0.8em; + } +} + +/*csslint adjoining-classes: false, box-model:false*/ +.pure-menu { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.pure-menu-fixed { + position: fixed; + left: 0; + top: 0; + z-index: 3; +} + +.pure-menu-list, +.pure-menu-item { + position: relative; +} + +.pure-menu-list { + list-style: none; + margin: 0; + padding: 0; +} + +.pure-menu-item { + padding: 0; + margin: 0; + height: 100%; +} + +.pure-menu-link, +.pure-menu-heading { + display: block; + text-decoration: none; + white-space: nowrap; +} + +/* HORIZONTAL MENU */ +.pure-menu-horizontal { + width: 100%; + white-space: nowrap; +} + +.pure-menu-horizontal .pure-menu-list { + display: inline-block; +} + +/* Initial menus should be inline-block so that they are horizontal */ +.pure-menu-horizontal .pure-menu-item, +.pure-menu-horizontal .pure-menu-heading, +.pure-menu-horizontal .pure-menu-separator { + display: inline-block; + *display: inline; + zoom: 1; + vertical-align: middle; +} + +/* Submenus should still be display: block; */ +.pure-menu-item .pure-menu-item { + display: block; +} + +.pure-menu-children { + display: none; + position: absolute; + left: 100%; + top: 0; + margin: 0; + padding: 0; + z-index: 3; +} + +.pure-menu-horizontal .pure-menu-children { + left: 0; + top: auto; + width: inherit; +} + +.pure-menu-allow-hover:hover > .pure-menu-children, +.pure-menu-active > .pure-menu-children { + display: block; + position: absolute; +} + +/* Vertical Menus - show the dropdown arrow */ +.pure-menu-has-children > .pure-menu-link:after { + padding-left: 0.5em; + content: "\25B8"; + font-size: small; +} + +/* Horizontal Menus - show the dropdown arrow */ +.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after { + content: "\25BE"; +} + +/* scrollable menus */ +.pure-menu-scrollable { + overflow-y: scroll; + overflow-x: hidden; +} + +.pure-menu-scrollable .pure-menu-list { + display: block; +} + +.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list { + display: inline-block; +} + +.pure-menu-horizontal.pure-menu-scrollable { + white-space: nowrap; + overflow-y: hidden; + overflow-x: auto; + -ms-overflow-style: none; + -webkit-overflow-scrolling: touch; + /* a little extra padding for this style to allow for scrollbars */ + padding: .5em 0; +} + +.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar { + display: none; +} + +/* misc default styling */ + +.pure-menu-separator { + background-color: #ccc; + height: 1px; + margin: .3em 0; +} + +.pure-menu-horizontal .pure-menu-separator { + width: 1px; + height: 1.3em; + margin: 0 .3em ; +} + +.pure-menu-heading { + text-transform: uppercase; + color: #565d64; +} + +.pure-menu-link { + color: #777; +} + +.pure-menu-children { + background-color: #fff; +} + +.pure-menu-link, +.pure-menu-disabled, +.pure-menu-heading { + padding: .5em 1em; +} + +.pure-menu-disabled { + opacity: .5; +} + +.pure-menu-disabled .pure-menu-link:hover { + background-color: transparent; +} + +.pure-menu-active > .pure-menu-link, +.pure-menu-link:hover, +.pure-menu-link:focus { + background-color: #eee; +} + +.pure-menu-selected .pure-menu-link, +.pure-menu-selected .pure-menu-link:visited { + color: #000; +} + +.pure-table { + /* Remove spacing between table cells (from Normalize.css) */ + border-collapse: collapse; + border-spacing: 0; + empty-cells: show; + border: 1px solid #cbcbcb; +} + +.pure-table caption { + color: #000; + font: italic 85%/1 arial, sans-serif; + padding: 1em 0; + text-align: center; +} + +.pure-table td, +.pure-table th { + border-left: 1px solid #cbcbcb;/* inner column border */ + border-width: 0 0 0 1px; + font-size: inherit; + margin: 0; + overflow: visible; /*to make ths where the title is really long work*/ + padding: 0.5em 1em; /* cell padding */ +} + +/* Consider removing this next declaration block, as it causes problems when +there's a rowspan on the first cell. Case added to the tests. issue#432 */ +.pure-table td:first-child, +.pure-table th:first-child { + border-left-width: 0; +} + +.pure-table thead { + background-color: #e0e0e0; + color: #000; + text-align: left; + vertical-align: bottom; +} + +/* +striping: + even - #fff (white) + odd - #f2f2f2 (light gray) +*/ +.pure-table td { + background-color: transparent; +} +.pure-table-odd td { + background-color: #f2f2f2; +} + +/* nth-child selector for modern browsers */ +.pure-table-striped tr:nth-child(2n-1) td { + background-color: #f2f2f2; +} + +/* BORDERED TABLES */ +.pure-table-bordered td { + border-bottom: 1px solid #cbcbcb; +} +.pure-table-bordered tbody > tr:last-child > td { + border-bottom-width: 0; +} + + +/* HORIZONTAL BORDERED TABLES */ + +.pure-table-horizontal td, +.pure-table-horizontal th { + border-width: 0 0 1px 0; + border-bottom: 1px solid #cbcbcb; +} +.pure-table-horizontal tbody > tr:last-child > td { + border-bottom-width: 0; +} diff --git a/public/css/styles.css b/public/css/styles.css new file mode 100644 index 0000000..9314934 --- /dev/null +++ b/public/css/styles.css @@ -0,0 +1,1282 @@ +body { + background: #fff; + color: #5F5C52; + font-size: 1.15em; + margin: 0; + padding: 0; +} + +html, button, input, select, textarea, +.pure-g [class *= "pure-u"] { + /* Set your content font stack here: */ + font-family: 'Open Sans', sans-serif; +} + +/* Typo */ +a { + /*color: #bb2222;*/ + color: #3273dc; + cursor: pointer; + text-decoration: none; +} + +a strong { + color: currentColor; +} + a:hover { + color: #363636; + /*color: #660000;*/ + } + +code { + background-color: whitesmoke; + color: #ff3860; + font-size: 0.875em; + font-weight: normal; + padding: 0.25em 0.5em 0.25em; +} + +h1, h2, h3, h4, h5, h6 { + color: #423F37; +} + +h1 { + font-size: 2em; + font-weight: normal; + margin-top: 0; +} + +h2 { + font-size: 1.2em; + margin: 2em 0 1.2em 0; +} + +p { + /*margin: 0 0 2.2em 0;*/ + margin: 0 0 1.4em 0; + font-size: 1em; + line-height: 1.6em; +} + + p + ul { + margin-top: -0.5em; + } + +/*code { + color: #000; + font-weight: normal; +}*/ + +pre { + background: none repeat scroll 0 0 #e9e6e2; + font-family: "Courier 10 Pitch",Courier,monospace; + font-size: 0.9em; + line-height: 1.3; + margin-bottom: 2em; + padding: 30px; + color: #222; + overflow: auto; + word-wrap: normal; + white-space: pre; +} + +table { + margin-bottom: 2.6em; + font-size: 0.88em; +} + +/* Container */ +.container { + max-width: 1260px; + margin: 0 auto; + padding: 0 20px; +} + +/* Header */ +.header .pure-u-1 { + text-align: right; +} + +.header .inner-container { + border-bottom: 1px solid #E3E0D8; + padding-top: 50px; + padding-bottom: 48px; +} + +.header .pure-menu li { + font-size: 0.9em; +} + +.header .pure-menu a { + color: #000000; +} + +.header .pure-menu .active a { + background-color: #eee; +} + +/* Brand */ +.brand-title { + font-size: 110%; + font-weight: bold; + text-transform: uppercase; + margin: 0 0 0 0; + padding: 0.21em 0; +} + +.brand-title a { + color: #29251F; +} + +.brand-tagline { + color: #ffffff; + font-size: 2em; + font-weight: 300; + margin: 1.5em auto 1.8em auto; + line-height: 1.4em; + max-width: 970px; + text-align: center; +} + +/* Footer */ +.footer { + background-color: #2D3138; + margin-top: 75px; + font-size: 0.8em; + color: rgb(255, 255, 255); + color: rgba(255, 255, 255, 0.7); + padding-top: 5em; + padding-bottom: 3em; +} + +.footer a { + color: #ffffff; + color: rgba(255, 255, 255, 0.7); +} + +.footer a:hover { + /*color: #cccccc;*/ + color: #4698D5; +} + +.footer ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +.footer li { + line-height: 1.6em; +} + +.footer h3 { + color: #ffffff; +} + +.footer p { + padding-right: 1em; +} + +.footer hr { + margin-top: 5em; + margin-bottom: 3em; + background-color: #ccc; + border: none; + height: 1px; +} + +/* Content */ +.content { + padding-right: 55px; +} + + .content li { + display: list-item; + line-height: 1.8; + padding: 0; + } + +.content-container { + font-size: 1.00em; + margin-top: 25px; +} + +/* Sidebar */ +.sidebar { + border-left: 1px solid #E3E0D8; + padding-left: 55px; +} + +.sidebar h4 { + margin-top: 0; +} + +.sidebar ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +.sidebar li { + font-size: 0.8945em; + line-height: 1.7; +} + +.sidebar .widget-blog { + padding-bottom: 50px; +} + +.sidebar a { + color: #57534A; +} + +.sidebar a:hover { + /*color:#00CA4C;*/ + color: #bb2222; +} + +.sidebar ul ul { + margin-bottom: 1em; +} + +.sidebar .menu li a { + font-weight: bold; +} + +.sidebar .menu li li a { + font-weight: normal; +} + +.sidebar .menu li.active > a { + color: #bb2222; +} + +.highlight pre { + font-size: 1.1em; +} + +.slider { + background: #3abac4; +} + +/* Page Index */ +.page-index .header .inner-container { + border-bottom: none; +} + +.page-index .content { + padding-right: 0; +} + +/* Pure */ +.pure-button { + background-color: #3BB8E6; + color: #ffffff; +} + +.pure-button:hover { + color: #ffffff; +} + +.pure-button i.fa { + padding-left: 0.5em; + padding-right: 0.5em; +} + +.pure-button .fa-chevron-left { + padding-left: 0; +} + +.pure-button .fa-chevron-right { + padding-right: 0; +} + +.button-xsmall { + font-size: 70%; +} + +.button-small { + font-size: 85%; +} + +.button-large { + font-size: 110%; +} + +.button-xlarge { + font-size: 125%; +} + +/* Pagination */ +.pagination { + text-align: center; + margin: 80px 0 0 0; + clear: both; +} + +.pagination a { + /*font-size:1.1em;*/ + padding-left: 1em; + padding-right: 1em; +} + +.e { + color: #fff; + background: #51565c; + padding: 0 10px; + display: inline-block; + margin: 0; +} + +.text-right { + text-align: right; +} + +.menu-link { + position: absolute; + display: block; /* show this only on small screens */ + top: 9px; + right: 0; /* "#menu width" */ + background: #fff; + font-size: 10px; /* change this value to increase/decrease button size */ + z-index: 10; + width: 2em; + height: auto; + padding: 2.1em 1.6em; +} + +.menu-link:hover, +.menu-link:focus { + background: #fff; +} + +.menu-link span { + position: relative; + display: block; +} + +.menu-link span, +.menu-link span:before, +.menu-link span:after { + background-color: #bbb; + width: 100%; + height: 0.3em; +} + +.menu-link span:before, +.menu-link span:after { + position: absolute; + margin-top: -0.6em; + content: " "; +} + +.menu-link span:after { + margin-top: 0.6em; +} + +/* Mobile Menu */ +#mobile-menu ul { + list-style-type: none; + margin: 0; + padding: 0; +} + +#mobile-menu a { + display: block; + color: white; + background-color: #2d3138; + padding: 0.5em 1em; + border-bottom: 1px solid #ccc; + text-align: center; + text-transform: uppercase; +} + + #mobile-menu .pure-menu-selected a, + #mobile-menu a:hover { + background-color: #4d5158; + } + +.doc-function table { + width: 100%; +} + +.doc-function td { + vertical-align: top; +} + +.doc-function .code td { + background-color: #eee; +} + +.doc-function .param td:first-child { + color: #000000; +} + +.gallery figure { + float: left; + margin-right: 1em; + margin-bottom: 1em; +} + +.gallery figcaption { + font-size: 0.8em; +} + +.video { + margin-bottom: 2em; +} + +/* Plugin Simplesearch */ +.plugin-simplesearch-form { + margin-bottom: 1.6em; +} + +.plugin-simplesearch-results p { + font-size: 0.9em; + margin-bottom: 0.8em; +} + +.plugin-simplesearch-results .result { + margin-bottom: 0.8em; +} + +.plugin-simplesearch-results .url { + font-size: 0.9em; +} + +.plugin-simplesearch-results .date { + font-size: 0.9em; +} + + +/* Media Queries */ +@media (min-width:980px) { +} + +@media (min-width:768px) and (max-width:979px) { + body { + font-size: 1.1em; + } + + .content { + padding-right: 25px; + } + + .sidebar { + padding-left: 25px; + } +} + +@media (max-width:767px) { + body { + font-size: 1.1em; + } + + .content { + padding-right: 0; + } + + .sidebar { + border-left: none; + padding-left: 0; + padding-top: 60px; + display: none; + } + + .brand-tagline { + font-size: 1.1em; + margin: 1.5em auto 1.8em auto; + } + + .content-container { + margin-top: 2em; + } + + .container { + padding: 0 15px; + } + + .header .inner-container { + padding-top: 25px; + padding-bottom: 23px; + } + + .box div { + margin-right: 0; + margin-left: 0; + } +} + +@media (max-width:480px) { + body { + font-size: 1em; + } + + h1, h2.post-title { + font-size: 1.4em; + } + + .container { + padding: 0 10px; + } + + .header .inner-container { + padding-top: 15px; + padding-bottom: 13px; + } + + pre { + padding: 10px; + } + + .pagination span { + display: none; + } + + .pagination .pure-button i.fa { + padding: 0; + } +} + +@media (min-width: 980px) { + .pure-visible-phone { + display: none; + } + + .pure-visible-tablet { + display: none; + } + + .pure-hidden-desktop { + display: none; + } +} + +@media (max-width: 480px) { + .pure-g-r > .pure-u, + .pure-g-r > [class *= "pure-u-"] { + width: 100%; + } +} + +@media (max-width: 767px) { + .pure-g-r > .pure-u, + .pure-g-r > [class *= "pure-u-"] { + width: 100%; + } + + .pure-hidden-phone { + display: none; + } + + .pure-visible-desktop { + display: none; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .pure-hidden-tablet { + display: none; + } + + .pure-visible-desktop { + display: none; + } +} + + +.box-l { + padding-right: 1em; +} + +.box-r { + padding-left: 1em +} + +fieldset, img, hr { + border: none; + outline: none; +} + + + +/* TABLE */ +/*a { color: #4183c4; text-decoration: none; } +a:hover { text-decoration: none; }*/ +.pure-button:hover { + text-decoration: none; +} +/*table { width: 100%; margin: 2em 0; }*/ +.pure-table a { + color: #333; + text-decoration: none; +} + + .pure-table a:hover { + text-decoration: none; + color: #4183c4; + } + +.pure-table { + border: none; +} + +.pure-table td, .pure-table th { + padding: 0.8em; + border: none; + border-bottom: 1px solid #f6f6f6; + text-align: left; +} + +.pure-table thead { + background-color: #F2F9EF +} + +.pure-table th { + font-weight: 300; +} + +table td .view:before { + font-family: FontAwesome; + top: 0; + content: "\f05a"; +} + +table td .edit:before { + font-family: FontAwesome; + top: 0; + content: "\f044"; +} + +table td .delete:before { + font-family: FontAwesome; + top: 0; + content: "\f014"; +} + +table .action { + width: 1em; +} + +.pure-form .checkboxlist > label, .pure-form .checkboxlist > .field-validation-error, +.pure-form .checkboxlist > i.fa-info-circle { + vertical-align: top; +} + +.pure-form .checkboxlist ul { + max-height: 8.5em; + overflow: auto; + width: 17em; + display: inline-block; + padding: 0; + margin: 0 0 1em 0; +} + +.pure-form .checkboxlist ul li { + margin-bottom: 3px; + list-style: none; +} + +.pure-form .checkboxlist ul li label { + width: 14em; +} + +.pure-form em, .pure-form i.fa-info-circle { + color: silver; + padding-left: 0.3em; +} + +.pure-form .pure-button { + margin-right: 1em; +} + +.pure-form.detail span { + vertical-align: middle; + line-height: 2em; +} + +.pure-form.detail label { + color: silver; +} + +textarea.medium, select.medium { + width: 25em; +} + +textarea.large, input.large { + width: 40em; + height: 17em; +} + +.pure-control-group.checkboxlist > span { + display: inline-block; +} + + +/* .field-validation-error { color: #a94442; margin-left: 0.7em; } +.field-validation-valid { display: none; } +.input-validation-error { border: 1px solid #a94442 !important; background-color: #fdf7f7; } */ + +.field-validation-error { + color: #a94442; + font-weight: bold; +} + +.validation-summary-errors, .summary-error { + border-left: 3px solid #d9534f; + background: #fdf7f7; + padding: 1em; + margin-bottom: 2em; +} + + .validation-summary-errors ul { + margin: 0.75em 1em; + } + +.validation-summary-valid { + display: none; +} + +.summary-success { + border-left: 3px solid #009900; + background: #F2F9EF; + padding: 1em; + margin-bottom: 2em; +} + + +/* purecss buttons */ +.button-success, +.button-error, +.button-warning, +.button-secondary { + color: white; + border-radius: 4px; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} + +.button-success { + background: rgb(28, 184, 65); /* this is a green */ +} + +.button-error { + background: rgb(202, 60, 60); /* this is a maroon */ +} + + +.pure-button.is-primary { + background-color: #00d1b2; + border-color: transparent; + color: #fff; +} +.pure-button.is-primary:hover, .pure-button.is-primary.is-hovered { + background-color: #00c4a7; + border-color: transparent; + color: #fff; +} + +.pure-button.is-primary:focus, .pure-button.is-primary.is-focused { + border-color: transparent; + color: #fff; +} + + .pure-button.is-primary:focus:not(:active), .pure-button.is-primary.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); + } + + .pure-button.is-primary:active, .pure-button.is-primary.is-active { + background-color: #00b89c; + border-color: transparent; + color: #fff; + } + + .pure-button.is-primary[disabled] { + background-color: #00d1b2; + border-color: transparent; + box-shadow: none; + } + + +.pure-button.is-success { + background-color: #23d160; + border-color: transparent; + color: #fff; +} + + .pure-button.is-success:hover, .pure-button.is-success.is-hovered { + background-color: #22c65b; + border-color: transparent; + color: #fff; + } + + .pure-button.is-success:focus, .pure-button.is-success.is-focused { + border-color: transparent; + color: #fff; + } + + .pure-button.is-success:focus:not(:active), .pure-button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(35, 209, 96, 0.25); + } + + .pure-button.is-success:active, .pure-button.is-success.is-active { + background-color: #20bc56; + border-color: transparent; + color: #fff; + } + + .pure-button.is-success[disabled] { + background-color: #23d160; + border-color: transparent; + box-shadow: none; + } + + +.pure-button.is-warning { + background-color: #ffdd57; + border-color: transparent; + color: rgb(0, 0, 0); + color: rgba(0, 0, 0, 0.7); +} + + .pure-button.is-warning:hover, .pure-button.is-warning.is-hovered { + background-color: #ffdb4a; + border-color: transparent; + color: rgb(0, 0, 0); + color: rgba(0, 0, 0, 0.7); + } + + .pure-button.is-warning:focus, .pure-button.is-warning.is-focused { + border-color: transparent; + color: rgb(0, 0, 0); + color: rgba(0, 0, 0, 0.7); + } + + .pure-button.is-warning:focus:not(:active), .pure-button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); + } + + .pure-button.is-warning:active, .pure-button.is-warning.is-active { + background-color: #ffd83d; + border-color: transparent; + color: rgb(0, 0, 0); + color: rgba(0, 0, 0, 0.7); + } + + .pure-button.is-warning[disabled] { + background-color: #ffdd57; + border-color: transparent; + box-shadow: none; + } + + + + + +/* additionals from opus4*/ +.block .block-title { + background: none; + /*position: relative; + margin: 0 0 25px; + padding: 0 0 0; + padding-right: 0px; + padding-right: 15px;*/ + /*border-bottom: 1px solid;*/ + border-bottom-color: white; + border-bottom-color: rgba(255,255,255,0.1); + /*color: #4698D5;*/ +} + +.blog-meta { + padding: 10px 0 20px; + color: #C2C2C2; + font-size: 0.8em; + margin-top: -1.7em; +} + +h2.post-title a:hover { + color: #00CA4C; + color: #bb2222; +} + +h2.post-title a { + color: #423F37; +} + +h2.post-title { + font-weight: normal; +} + + + + + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-dots { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: none; + display: inline-flex; + /*display: inline-block;*/ + font-size: 1rem; + height: 2.25em; + justify-content: flex-start; + line-height: 1.5; + padding: calc(0.375em - 1px) calc(0.625em - 1px) calc(0.375em - 1px) calc(0.625em - 1px); + /*padding-top: calc(0.375em - 1px); + padding-right: calc(0.625em - 1px); + padding-bottom: calc(0.375em - 1px); + padding-left: calc(0.625em - 1px);*/ + position: relative; + vertical-align: top; +} + + .pagination-previous:focus, + .pagination-next:focus, + .pagination-link:focus, + .pagination-dots:focus, + .is-focused.pagination-next, + .is-focused.pagination-link, + .is-focused.pagination-dots, + .pagination-previous:active, + .pagination-next:active, + .pagination-link:active, + .pagination-dots:active, .is-active.pagination-previous, + .is-active.pagination-next, + .is-active.pagination-link, + .is-active.pagination-dots { + outline: none; + } + + .pagination-previous.disabled, + .pagination-next.disabled, + .pagination-link.disabled, + .pagination-dots.disabled { + cursor: not-allowed; + } + + + +.pagination { + /*background-color:azure;*/ + font-size: 1rem; + margin: -0.25rem; +} + + .pagination.is-small { + font-size: 0.75rem; + } + + .pagination.is-medium { + font-size: 1.25rem; + } + + .pagination.is-large { + font-size: 1.5rem; + } + + .pagination.is-rounded .pagination-previous, + .pagination.is-rounded .pagination-next { + padding-left: 1em; + padding-right: 1em; + border-radius: 290486px; + } + + .pagination.is-rounded .pagination-link { + border-radius: 290486px; + } + +/*.pagination,*/ +.pagination-list { + align-items: center; + display: flex; + justify-content: center; + text-align: center; + list-style: none; +} + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-dots { + font-size: 1em; + padding-left: 0.5em; + padding-right: 0.5em; + justify-content: center; + margin: 0.25rem; + text-align: center; +} + + +.pagination-previous, +.pagination-next, +.pagination-link { + border-color: #dbdbdb; + color: #363636; + min-width: 2.25em; +} + +.pagination-previous:hover, +.pagination-next:hover, +.pagination-link:hover { + border-color: #b5b5b5; + color: #363636; +} + +.pagination-previous:focus, +.pagination-next:focus, +.pagination-link:focus { + border-color: #3273dc; +} + +.pagination-previous:active, +.pagination-next:active, +.pagination-link:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); +} + +.pagination-previous.disabled, +.pagination-next.disabled, +.pagination-link.disabled { + background-color: #dbdbdb; + border-color: #dbdbdb; + box-shadow: none; + color: #7a7a7a; + opacity: 0.5; +} + +.pagination-previous, +.pagination-next { + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; +} + +.pagination-link.is-current { + background-color: #3abac4; /*#3273dc;*/ + border-color: #3abac4; + color: #fff; +} + +.pagination-dots { + color: #b5b5b5; + pointer-events: none; +} + +.pagination-list { + flex-wrap: wrap; +} + +@media screen and (max-width: 767px) { + .pagination { + flex-wrap: wrap; + } + + .pagination-previous, + .pagination-next { + flex-grow: 1; + flex-shrink: 1; + } + + .pagination-list li { + flex-grow: 1; + flex-shrink: 1; + } +} + +@media screen and (min-width: 768px), print { + .pagination-list { + flex-grow: 1; + flex-shrink: 1; + justify-content: flex-start; + order: 1; + } + + .pagination-previous { + order: 2; + } + + .pagination-next { + order: 3; + } + + .pagination { + justify-content: space-between; + } + + .pagination.is-centered .pagination-previous { + order: 1; + } + + .pagination.is-centered .pagination-list { + justify-content: center; + order: 2; + } + + .pagination.is-centered .pagination-next { + order: 3; + } + + .pagination.is-right .pagination-previous { + order: 1; + } + + .pagination.is-right .pagination-next { + order: 2; + } + + .pagination.is-right .pagination-list { + justify-content: flex-end; + order: 3; + } +} + + + + +.select { + height: 2.25em; +} +/*.pure-form .select{ + display:block; +}*/ +.select { + /*display: inline-block;*/ + display: grid; + max-width: 100%; + position: relative; + vertical-align: top; + background-color: yellow; +} + +.select::after { + border: 4px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: .325em; + margin-top: -.4375em; + pointer-events: none; + position: absolute; + top: 50%; + -o-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -o-transform-origin: center; + -ms-transform-origin: center; + -moz-transform-origin: center; + -webkit-transform-origin: center; + transform-origin: center; + width: .325em; + +} +.select::after { + border-color: #51565c; + /*right: 2.125em;*/ + right: 1.2em; + z-index: 4; +} + + + +.select select:not([multiple]) { + padding-right: 2.5em; +} + +.select select { + background-color: #fff; + border-color: #dbdbdb; + cursor: pointer; + display: block; + max-width: 100%; + outline: 0; + +} +.select select { + -moz-appearance: none; + -webkit-appearance: none; + /* border: 1px solid transparent; */ + border-radius: 4px; + box-shadow: none; + /* display: inline-flex; */ + /* font-size: 1rem; */ + height: 2.25em; + /* justify-content: flex-start; */ + /* line-height: 1.5; */ + padding: calc(.375em - 1px) calc(.625em - 1px) calc(.375em - 1px) calc(.625em - 1px); + position: relative; + vertical-align: top; +} + + + +.pure-form input[type="text"] { + -moz-appearance: none; + -webkit-appearance: none; + border-color: #dbdbdb; + box-shadow: none; + height: 2.25em; +} + +.pure-form textarea { + -moz-appearance: none; + -webkit-appearance: none; + border-color: #dbdbdb; + box-shadow: none; +} +.pure-form legend { + font-weight:bold; +} + + + +.pure-form-message-inline { + color: #7a7a7a; + font-size: 0.675em; +} +.pure-div { + padding-top:10px; +} + + +.pure-form-aligned .pure-control-group label { + text-align: left; + /*display: inline-block; + vertical-align: middle; + width: 10em; + margin: 0 1em 0 0;*/ +} + + +/*.sidebar-simplesearch { + position: relative; + margin-bottom: 2.5em; + white-space: nowrap; +} + + .sidebar-simplesearch input[type=text] { + padding: 0.25em 0.3em; + color: #666; + }*/ + + /*.sidebar-simplesearch button { + padding: 0.25em 0.3em; + border: none; + background: none; + position: absolute; + right: 0.25em; + color: #666; + }*/ \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3b6d2c593c7b8f4215414652c469d42cf97f72ec 100755 GIT binary patch literal 894 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 vx~zvSiJ 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/fontawesome-webfont.ttf b/public/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..86784df961f954a23a3a5afa57f07ebee0396192 GIT binary patch literal 150920 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%0DR0p(Cdp z6AdMZCn{uOwSHS7UXULv>1^0weQw3LX`*!9(j^zX=blnAMtMj1xV$RqEL_^q^4{Cy z5=$58ZI+6X1+P4NX4T|5Nq1gI>->|@(C^XO9}CQvE6T$I%FSOMuz4)9PB26~0fSgj z+*ne$>j>MyM%~h4XTn|MriUDJ<~W?@X2<%?75V2+T$0l3ZxSvDMhyDuF*;*$AU|Tz z73AynkpX95b$h3KbhYTvyNeT%?q}?V>#x@qH;PZ*t@sP;@*TTl!HwpEQNcPx&GS3% zpAx7nEVP-boY93<)7@>DN7=Eg=ajMu^88w&mauVx7p-sL;om&8-9_y~oNF7U2QL&{ zb;$7xVq}B*3jb5X!f`PkL!t$>tqVn5mx#}Ip1@Rf%_%8ooa&JYf-D9aLE`09wa7j(0Nw(dt^xR>V1GehhzIvp%&~}-@QNHna3J@$}<+YOD zTcTxpt<$ph5hgz7FDjBov(ntLDcoFM<#n%hBD2ecbIeQI$1HLe&0$TRfL3-xJC)~l z`E@X2$-2C>sEg-G>(*(_H#g1>R;_f6Unl%B;cWGzH2o@vj83nXgEy=e88z$i$N89M6RnuFqgm$#z-Xh0S~l%g=j(Xp)TJ;i+c`l zoEg4n%I1#IZkg$%f3X?L!eX9+|;Nh#9w6U$Cxuh=7$dFdyh@Q!LiPar@ z$`{_Ua^hv|j@!d7UbQfEE~IZ-FShGma22BPregLA&t5t z;y{zh(J)f|C46qTD0dhwR-b6W1B zcV>J(h^gSAacTe_^9t#~_jv3Uwv67+R$3&N>sW~1B=yJa3@=wwcDxdOlw_h#Bc}N~ zxdsLsDC$7E$y~|7CUhDq!H7Z${m_u~4}D{WmDhm3Q^Q1UU*?^p4Qf@1oS0B@4#4&YoR+(+$^c+IatzwLQg^E7nZjzO1fpR%HA><=uk9 zarO1lc5&L&hZvIWvGKchJrfFri*X|V^SuN63k!>j$Co7AYnN@>`J8k?>$GX(>YXO- z4QH(%CEDStt*(n2?q@A#R%KXEqi{o@hFoob>=JGe&lz}MxDE9u+5`?x-i^1};PcY}{I?~zUPB&OTDO$h1FxApCRLUV;rd`Y z(Ve7ogs6y?iY3T!lWyXqO+KF>>&N#QdZs~ z75L~q>c3Z7%9J_fEiL8jfwC4?dQDaGFLd@7b(^dbZe}+$JiBe%vkezpbXxP?va-Eq ztSntsHQy3)l!#_5C>PWQo+&*H@#{LTscO0Zaf@s*fYLBUKsyyT>t{ zK-RZH)W9db#3sWju27)DP^oE!C*BN1lGhz}a=f3K0JkENkQWedD->bEz#FNIq_Lv6 zQcY0yHk_l@4LGNw)zeM<`?wd2CVw+tODXSBz|4y??OZ4eH<}DcR4Xr)Y(~VsDYr!9Grns$HtJiw- zqWMOX6Fh|@&ud@rWQI|BA}h`h76{DX&>6LoN#|h9?RU5t^BVMVWWnPgL7Fe9VS;#`H)q6q` zl8MPuNtIkGx$iO9#iBxenYAh|S+q=a8>`N{q{3%13;3kgBl-lvA$V;itbJzscG09Y z2r%Z0CXsz#FgUcbLDmYQwajTSJ!&+IR-GWg8@o}qh&K4si2^eU64YLLX159rZm*#8 z`=WuEKDIpHu_os98H)=m7PzLnD<+rJ<`>+VbR|p5{j#x`!NZgptqUB5eorD)TWqj6 z1v5N7ibb*5eNn`}YP_$!Ty(mP=a25FG)W+Q&O#lsT*lnzSk019*A*Y1SXVN3A~30n zS2irRfz>b>gTeY@XV7V|3f`F0?sgd)Pb+P1?M#d|#Y5q+Xk}Jgz#f!VGZ)jMD$FLD zELvp_(*xQ{Zxoo_h^$}eZb7-(>9^$t?FGhSUAa8^9JhPi9a~EUsq%uVcuNs{2-@Zp zmUunmi}fP1IM&oLaYCL8apg(5u+(D^^}B5bQPPctDr#(zt)fT}O$Jur@)okP63J#Y z`wPvjjyRav;4oOVD2b>ol3WtFPq^72<(=8?vKb_U0RI=Q2;8NXfZ5bmWDs?E z<3@KBXzv;8T%-4UipJ&VBR*#QYI8{PU1qRVm5R3JF;)H!yszcD1Rhq^@5FA zELzDTLvdghnRN7dbDq!Zg}1O%a!n1|bxuQp7sD8xlpo4tti^(1ZFZP^3r+UX(Gr7M zGCGTkJHu{SwAjkDezVtP>##Zu+C05BWEHg)b>riXpVmz+Hu&w{0?K^7roO{{P2I-l zPTNuLVFkgmLmkVvZ(7^@>cTOTO9i1gibmJF%ms4PI%aPET>V1H2{p-O!4MJ4B%=k46r7h+Z7+pqs};iwJQ5BviQx-jdhFQ?DCc+12KCb!t$6Av(hyM5ZO ziFq!VOG{=<>S#%n7aEc2?@+F+RYFf{Ju?S|1W7pp4`r#XaiS;cWrTBw~nK>^xwlhCbruAWXiI5Cr;rZOx z6I`6i=WuztO|uNESzVO~&oTrH!#V(e3W^bhV2zA@;AIgnL>a`fWLLqSM6F3NqH2;V zTr8oKy*v;N91*x8$?Jp;*(==;Z(1~COiy8cnbWqvyrZT zoaPO6jjx?OrmUu*ruJX=c3!$+0$cy?p*=k_I|s%&o8RoBTSR z-5zkv@P~{2$;yVsRYl`Abha*OiCRm%R(ENw5%VXB}t-Waxt)ioDwig@h{&u+Gr6tTna1L2JZ1BjJ)x z3m#xFBnECM^#LY+5S8;i=|*3XmPLGp;ZMDVqTeDFd6eIi7MGpoEPmfMqfOFky}_EW z@(&CAf|hwZ%?;D%i03U&dcP;N&5&mP!dG1EKK2Mc&>gT9*!Hw~@N8K@H26uUvP=1; z!|SQ=x{U@Un5Q#%r^|a9makhk@S%f^Wf!Ab!*mX+lyZV6D3l~>J-N0zXTwU$3P6VmCc-v07GOaP%V+4tdpP7+q+XIKw+~4|6KaXxZ{1k4RTza>CLH z{13+f;RLXy($7mHCMjJBF!Z|zHu93Zs*I++xL@hz*Lwk_!Co3FM=GQ93WKg;NP_VJ z{X)}#Wdlp)^_Aq%C{bq1U^J;NUC`<;X=yI;w=Nh}1w)FoXas@zkiF%d+FcX?w^CY~ zU(5nU-BZ0+pM*wKz~=S_g7j^K5U){_n}Hx8_iGenh2q2Fgyn-!Z*XS`2NXGQeIy>U z0l~Q7C1tRHMJx)Y(&GSM3Xex1#Plt><;@S@yk&{HV;dy9^0vihRo;Ho7&1Ppylu5v zl(*qxYIyWfgDlxu34UZHj~a>%kHR_7W??0n9|hCUYw)&&P3~4+hL@Ih*_Rf}m&>$p z<6<@4vdv-s@=J>yzp@(jSF>6DRe2e|+AUvxY36;Nl7EUg2Pa0TCQ5XT$eNZ@KxDOy z@(iv#J9&KxXOjsEgB)&g0$iL=>Kh+de*I|AuZ|-OYtMcxn6YKbCH=QjI@T@EGUsimbZ7p*Ho8_ubW^Jn-8+014dj^b7xW!OJZF*6%Xki@UVKs8K~T zU)gf~(F3*4B5Nt;w5kVIZNcT#8+;0LrRPXZ!^rt8C38?Ggf+P{7{46V&~(;fEBt`R z)-laMk}h%UCHuh;UIk{dpa~uC)pkQSFoC?NFzU-8{2~^I4+GFe=z;-DP@Ng1fM}r% z_JI3?8V2z@G#tVh6d5ob2H7y=)pi5%qWx7Ekn5e#$?oKY6{AzNt2>*mwkO>Aen1U7 ze%;hh1?oTS0y^noar$9kle!M~2b4+a)Q_3*#{$w9-?#lW`0%@2&&u{uA>^_iNCo3@ zi}e*awjJ+ii6&3Y`uu{HMPu@1rY~vg z=`5XKF&7&Iugeq=m|1odg`4UY$4qU-)kOwD3Y0Ht>p9W*tJ?rCe^{=`{Zn3THr(y7U7t!4}Zp}BS37K;@ibIzu>+O>oYm9TO8yZBb*jHUI#NA^u`BG$by{uTCNSaR~8X-5m(< zrzFND$Y=~==|H5TboPDEK6Br`r;8&`E4QRyd<-t$QsS`}(~q!{yNj1CTlnSv{a?zh zN^n3qW94s||Ho|NZ_;JT2ftm(4h^us7XC)T6ovkf_=gL?t05APSw&)3wHl~Ku=;`? zTLmZ=fB-A_>giafV;KskM3oGMoMeTV0}|DSHONX+SxblV1))XDdR8u*)na#SQVzZ9 zLduoHtb9$$lx2%nESMYK{QPB`$K@pgI`8C;<#QG!E47m@T(O|FHtdxFk`SESSZ9sZ zcAni*B5U2SRYFFxR@X0Deo==IZ=E@R-t=aN!&jsAPwU#g^=kH`uC1*h(OQ^iG`^>N z#R9QB_T~|*Q*Wu5x_fT5J2G>6#l^i$6hucsG&Ev+6vDq)^)Ve25-MHyH z9eJHyr!AU0sUAK8O9DFIxI|Nt;G22joYq1o=8t&YF--+k5vZJpU&PQ{pMI%_HWBqLhuJOrmNAQ|0*AmR7`gS9!l|94ObB4iz&Koi~^XVI&VAX<`Al zLk-z-xGDbh)PYoDANeJjGa*;z*uZn&B9;oN708~M<$Il{K-ibmkoB^!!`aV7rnB6* zxD(;_RlZz%I{0#rrXEzl$5}FPY0d_$13>B9z-7? zY(PA|rb&7A$G0k9-16EF9Tyw`+Rg4aw+X?f<3JEBb$qIn`lDjEptmllpRlZ_Bg*bp z*4o)GOC9gA(_eh#|I+pz@KIHH`}mw&ruW{H$+Yw`$z;+qDFg@!389A;dhZ<(hGxft zQdE$rh+;2TP;|4px>nQ|*Ij)rxQpxB*4`j<{XOSS0s-CC_w)b!DR=HY_uO{wx#xV# z^L@VW-AELBA12u~TT0*G2GXC+?>d(ykZjzDh3GXKoegS$;O0E=T zcriZ@fwzu@j*KY=eGW5D%A`xxX3Sd@3x(Kd`lfOF{b&eYt-R}_5xJq!D((t@PFR!f z-CQ}>wZK)E0#|@s}@-&v3e(iCZFqhr|=@K_c*KbBv|DwKlrvDaco$}=*Bq0j%Ud^IzbRW9jgDw+JUyEI;jJ&qm$=-3 zgO1PZn&jEH&oikje;k0JoVFk`G(ev3RjeT0@pysH?qCdd1LLs!3gU5@mDLsJ26Bsa ztX0+vCrIu znVLVlO8X#v{#rN^ò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

*z>DrjADqxXS}JFOTA?xX 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 z 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 literal 0 HcmV?d00001 diff --git a/public/img/feed_small.png b/public/img/feed_small.png new file mode 100644 index 0000000000000000000000000000000000000000..597c29f973ec2d148036351cf39ba1e84410f61a GIT binary patch literal 395 zcmV;60d)R}P)e>3`*#76v`Nx|0#hUcInDVrX`@Mtuw|4ol zYWAyW^Q30*on`HsWAvO)@s&;Xn?&}PKJ}D3_?S5RoH_fWM)Hq4@r*q4jyCa%H1CEp z?S?w*e>LcPHRX0T<8n3QZ!q9#E!r!@GAZEWFH& z4F4q=RT$s@{PUYx{r!K|{|qY1yu#9gtgL#9$|_8M{(t}YhC!3z)_*2OmjC}nzkmPy znCJ6**|ML>W>l#fMAgNcEWjftIu;g=!mb4A&T$|I0G6FoM7hCIJ5hGRMORl_>xK002ovPDHLkV1f}9(DMKQ literal 0 HcmV?d00001 diff --git a/public/img/theme/icon-author.gif b/public/img/theme/icon-author.gif new file mode 100644 index 0000000000000000000000000000000000000000..685f25703e5041e89d152fd73e91de7a79937785 GIT binary patch literal 142 zcmZ?wbhEHbg}f|FW%pK^7_X87ng25Idkpdfit&uow&B;@Z}Y|&Mew` za@v|h6PEAmTD+S93>1H|FtP(#Iv^g%38@9B+NW! literal 0 HcmV?d00001 diff --git a/public/img/theme/icon-on-off.png b/public/img/theme/icon-on-off.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6bfdb590e120615cd5e185989a473ccbbdd378 GIT binary patch literal 883 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA`ZJ_PuLxB_W7`2YVukbUUTA-D+f zjLVlV6R#MqQbk2&=gysH&z=<&6y)LIF*Gy;y5ZcpbD5c$Ks7-2_U+rHq@;ihAecFG zCQ#7A!U9N6nlvdRBZHltT}Vg>sJ*791}M07>sFw$4I4J7si`qDGY19+e*E}RPEM}A zzCJfMcfo=My}iA9muIp7l{%LM`2{m@Iq+>|ddtYnE-A<=CLi6PsiG@lWaW0t)K@wv zMJ*vbz{xgCDb9Pr!ACzI{(1Y$|Msmmm!tlxlx|;mvEk#{Id=|x77GuxV_;x>@9E+g zQgLhQmF8)04J23}EaA<1e8X-1TkCJX_n-Y!YCLam$%nOf+g@yaI7iD><9YvtPtA=R zS2b172nl4Cyq_-9`Eb`t=H20Hp^g)_7nx6Zzq(mVyTwjOro=cIPabG3~|Yn?D0LbACTv{zyyjLi<_uAT{U9b%s_B zMrSWRvlX0RB|YtPi%8`83rA;{uhoin*t;+GjDnb z*ZtG3>N#*-)9vnVIktJ9?Yi&6i`sIk_61yv{nGxe;?kX&Ts8$4`gAPUA6|F&y}sLA z&*FY%zW3`YADYPZzd4#@5u@|wqQ$(nN0|>Zuiwe{E=<4E++)4*%D3mUVrF@<#-7i2 z59T!Ly|u6WKTGqWT{q|Q$6Ws&TW;{)u0*_m%ZJZLw_Ed`mQt|cG{vWXzpR@5PVCTi W$CXbbBF+F)5`(9!pUXO@geCy`pJhG( literal 0 HcmV?d00001 diff --git a/public/img/theme/icon-title.gif b/public/img/theme/icon-title.gif new file mode 100644 index 0000000000000000000000000000000000000000..21192f4412e03bee052cfc33d64af32d30ad11a9 GIT binary patch literal 156 zcmV;N0Av40Nk%w1VGIBe0J8u9>h1F6=)7Au(%R(A*5Ss{-N4M+y2#eF!_%(6 z&!V--oUz50tiq6|zKWx}A^8LW2LJ#7EC2ui01N;S000C@5J-t?o%m^u=UQ6_9GfTAcY7Z1JybK$AU2#5WWOKVqut! KKV&f`0suQWheTfh literal 0 HcmV?d00001 diff --git a/public/index.php b/public/index.php index 37f19c2..6778d8a 100755 --- a/public/index.php +++ b/public/index.php @@ -49,7 +49,7 @@ $app = require_once __DIR__.'/../bootstrap/app.php'; $kernel = $app->make('Illuminate\Contracts\Http\Kernel'); $response = $kernel->handle( - $request = Illuminate\Http\Request::capture() + $request = Illuminate\Http\Request::capture() ); $response->send(); diff --git a/public/js/lib.js b/public/js/lib.js new file mode 100644 index 0000000..c13ce29 --- /dev/null +++ b/public/js/lib.js @@ -0,0 +1 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=9)}([function(e,t,n){"use strict";var r=n(3),i=n(15),o=Object.prototype.toString;function a(e){return"[object Array]"===o.call(e)}function s(e){return null!==e&&"object"==typeof e}function u(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),a(e))for(var n=0,r=e.length;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(e){u.headers[e]={}}),r.forEach(["post","put","patch"],function(e){u.headers[e]=r.merge(o)}),e.exports=u}).call(t,n(4))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r1)for(var n=1;n0&&t-1 in e)}C.fn=C.prototype={jquery:"3.3.1",constructor:C,length:0,toArray:function(){return u.call(this)},get:function(e){return null==e?u.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=C.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return C.each(this,e)},map:function(e){return this.pushStack(C.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),W=new RegExp("="+P+"*([^\\]'\"]*?)"+P+"*\\]","g"),z=new RegExp(q),V=new RegExp("^"+M+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,G=/^[^{]+\{\s*\[native \w/,Y=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Q=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=ye(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{N.apply(E=D.call(w.childNodes),w.childNodes),E[w.childNodes.length].nodeType}catch(e){N={apply:E.length?function(e,t){j.apply(e,D.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function oe(e,t,r,i){var o,s,c,l,f,h,g,y=t&&t.ownerDocument,_=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==_&&9!==_&&11!==_)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,v)){if(11!==_&&(f=Y.exec(e)))if(o=f[1]){if(9===_){if(!(c=t.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(y&&(c=y.getElementById(o))&&b(t,c)&&c.id===o)return r.push(c),r}else{if(f[2])return N.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return N.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==_)y=t,g=e;else if("object"!==t.nodeName.toLowerCase()){for((l=t.getAttribute("id"))?l=l.replace(te,ne):t.setAttribute("id",l=x),s=(h=a(e)).length;s--;)h[s]="#"+l+" "+ge(h[s]);g=h.join(","),y=Q.test(e)&&ve(t.parentNode)||t}if(g)try{return N.apply(r,y.querySelectorAll(g)),r}catch(e){}finally{l===x&&t.removeAttribute("id")}}}return u(e.replace(F,"$1"),t,r,i)}function ae(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function se(e){return e[x]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ce(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function le(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e: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",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=G.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=x,!d.getElementsByName||!d.getElementsByName(x).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&v){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&v){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&v)return t.getElementsByClassName(e)},g=[],m=[],(n.qsa=G.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+P+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+x+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||m.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+P+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(n.matchesSelector=G.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),g.push("!=",q)}),m=m.length&&new RegExp(m.join("|")),g=g.length&&new RegExp(g.join("|")),t=G.test(h.compareDocumentPosition),b=t||G.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},S=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&b(w,e)?-1:t===d||t.ownerDocument===w&&b(w,t)?1:l?L(l,e)-L(l,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:l?L(l,e)-L(l,t):0;if(i===o)return le(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?le(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(W,"='$1']"),n.matchesSelector&&v&&!A[t+" "]&&(!g||!g.test(t))&&(!m||!m.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),b(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&$.call(r.attrHandle,t.toLowerCase())?i(e,t,!v):void 0;return void 0!==o?o:n.attributes||!v?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return l=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return X.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&z.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&T(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(H," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,d,h,v=o!==a?"nextSibling":"previousSibling",m=t.parentNode,g=s&&t.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(m){if(o){for(;v;){for(p=t;p=p[v];)if(s?p.nodeName.toLowerCase()===g:1===p.nodeType)return!1;h=v="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&y){for(b=(d=(c=(l=(f=(p=m)[x]||(p[x]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===_&&c[1])&&c[2],p=d&&m.childNodes[d];p=++d&&p&&p[v]||(b=d=0)||h.pop();)if(1===p.nodeType&&++b&&p===t){l[e]=[_,d,b];break}}else if(y&&(b=d=(c=(l=(f=(p=t)[x]||(p[x]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===_&&c[1]),!1===b)for(;(p=++d&&p&&p[v]||(b=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==g:1!==p.nodeType)||!++b||(y&&((l=(f=p[x]||(p[x]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[_,b]),p!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[x]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=L(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(F,"$1"));return r[x]?se(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return V.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=v?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xe(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,c=null!=t;s-1&&(o[c]=!(a[c]=f))}}else g=xe(g===a?g.splice(h,g.length):g),i?i(null,a,g,u):N.apply(a,g)})}function _e(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,l=ye(function(e){return e===t},s,!0),f=ye(function(e){return L(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==c)||((t=n).nodeType?l(e,n,r):f(e,n,r));return t=null,i}];u1&&be(p),u>1&&ge(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(F,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,l){var f,h,m,g=0,y="0",b=o&&[],x=[],w=c,C=o||i&&r.find.TAG("*",l),T=_+=null==w?1:Math.random()||.1,k=C.length;for(l&&(c=a===d||a||l);y!==k&&null!=(f=C[y]);y++){if(i&&f){for(h=0,a||f.ownerDocument===d||(p(f),s=!v);m=e[h++];)if(m(f,a||d,s)){u.push(f);break}l&&(_=T)}n&&((f=!m&&f)&&g--,o&&b.push(f))}if(g+=y,n&&y!==g){for(h=0;m=t[h++];)m(b,x,a,s);if(o){if(g>0)for(;y--;)b[y]||x[y]||(x[y]=O.call(u));x=xe(x)}N.apply(u,x),l&&!o&&x.length>0&&g+t.length>1&&oe.uniqueSort(u)}return l&&(_=T,c=w),b};return n?se(o):o}(o,i))).selector=e}return s},u=oe.select=function(e,t,n,i){var o,u,c,l,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(c=u[0]).type&&9===t.nodeType&&v&&r.relative[u[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=X.needsContext.test(e)?0:u.length;o--&&(c=u[o],!r.relative[l=c.type]);)if((f=r.find[l])&&(i=f(c.matches[0].replace(Z,ee),Q.test(u[0].type)&&ve(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ge(u)))return N.apply(n,i),n;break}}return(p||s(e,d))(i,t,!v,n,!t||Q.test(e)&&ve(t.parentNode)||t),n},n.sortStable=x.split("").sort(S).join("")===x,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ce("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ce("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||ce(I,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(n);C.find=A,C.expr=A.selectors,C.expr[":"]=C.expr.pseudos,C.uniqueSort=C.unique=A.uniqueSort,C.text=A.getText,C.isXMLDoc=A.isXML,C.contains=A.contains,C.escapeSelector=A.escape;var S=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&C(e).is(n))break;r.push(e)}return r},$=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},E=C.expr.match.needsContext;function O(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var j=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function N(e,t,n){return y(t)?C.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?C.grep(e,function(e){return e===t!==n}):"string"!=typeof t?C.grep(e,function(e){return f.call(t,e)>-1!==n}):C.filter(t,e,n)}C.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?C.find.matchesSelector(r,e)?[r]:[]:C.find.matches(e,C.grep(t,function(e){return 1===e.nodeType}))},C.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(C(e).filter(function(){for(t=0;t1?C.uniqueSort(n):n},filter:function(e){return this.pushStack(N(this,e||[],!1))},not:function(e){return this.pushStack(N(this,e||[],!0))},is:function(e){return!!N(this,"string"==typeof e&&E.test(e)?C(e):e||[],!1).length}});var D,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:a,!0)),j.test(r[1])&&C.isPlainObject(t))for(r in t)y(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=a.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(C):C.makeArray(e,this)}).prototype=C.fn,D=C(a);var I=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function M(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t=C(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&C.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?C.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?f.call(C(e),this[0]):f.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),C.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,"parentNode")},parentsUntil:function(e,t,n){return S(e,"parentNode",n)},next:function(e){return M(e,"nextSibling")},prev:function(e){return M(e,"previousSibling")},nextAll:function(e){return S(e,"nextSibling")},prevAll:function(e){return S(e,"previousSibling")},nextUntil:function(e,t,n){return S(e,"nextSibling",n)},prevUntil:function(e,t,n){return S(e,"previousSibling",n)},siblings:function(e){return $((e.parentNode||{}).firstChild,e)},children:function(e){return $(e.firstChild)},contents:function(e){return O(e,"iframe")?e.contentDocument:(O(e,"template")&&(e=e.content||e),C.merge([],e.childNodes))}},function(e,t){C.fn[e]=function(n,r){var i=C.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=C.filter(r,i)),this.length>1&&(P[e]||C.uniqueSort(i),I.test(e)&&i.reverse()),this.pushStack(i)}});var R=/[^\x20\t\r\n\f]+/g;function q(e){return e}function H(e){throw e}function F(e,t,n,r){var i;try{e&&y(i=e.promise)?i.call(e).done(t).fail(n):e&&y(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}C.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return C.each(e.match(R)||[],function(e,n){t[n]=!0}),t}(e):C.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?C.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},C.extend({Deferred:function(e){var t=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return C.Deferred(function(n){C.each(t,function(t,r){var i=y(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(e,r,i){var o=0;function a(e,t,r,i){return function(){var s=this,u=arguments,c=function(){var n,c;if(!(e=o&&(r!==H&&(s=void 0,u=[n]),t.rejectWith(s,u))}};e?l():(C.Deferred.getStackHook&&(l.stackTrace=C.Deferred.getStackHook()),n.setTimeout(l))}}return C.Deferred(function(n){t[0][3].add(a(0,n,y(i)?i:q,n.notifyWith)),t[1][3].add(a(0,n,y(e)?e:q)),t[2][3].add(a(0,n,y(r)?r:H))}).promise()},promise:function(e){return null!=e?C.extend(e,i):i}},o={};return C.each(t,function(e,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add(function(){r=s},t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].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),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=u.call(arguments),o=C.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?u.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(F(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||y(i[n]&&i[n].then)))return o.then();for(;n--;)F(i[n],a(n),o.reject);return o.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&B.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},C.readyException=function(e){n.setTimeout(function(){throw e})};var U=C.Deferred();function W(){a.removeEventListener("DOMContentLoaded",W),n.removeEventListener("load",W),C.ready()}C.fn.ready=function(e){return U.then(e).catch(function(e){C.readyException(e)}),this},C.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==e&&--C.readyWait>0||U.resolveWith(a,[C]))}}),C.ready.then=U.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(C.ready):(a.addEventListener("DOMContentLoaded",W),n.addEventListener("load",W));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,c=null==n;if("object"===_(n))for(s in i=!0,n)z(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,y(r)||(a=!0),c&&(a?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(C(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){Z.remove(this,e)})}}),C.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,C.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=C.queue(e,t),r=n.length,i=n.shift(),o=C._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){C.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:C.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),C.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ve={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function me(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&O(e,t)?C.merge([e],n):n}function ge(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(c=C.contains(o.ownerDocument,o),a=me(f.appendChild(o),"script"),c&&ge(a),n)for(l=0;o=a[l++];)he.test(o.type||"")&&n.push(o);return f}ye=a.createDocumentFragment().appendChild(a.createElement("div")),(be=a.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),ye.appendChild(be),g.checkClone=ye.cloneNode(!0).cloneNode(!0).lastChild.checked,ye.innerHTML="",g.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var _e=a.documentElement,Ce=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ke=/^([^.]*)(?:\.(.+)|)/;function Ae(){return!0}function Se(){return!1}function $e(){try{return a.activeElement}catch(e){}}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}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=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return C().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=C.guid++)),e.each(function(){C.event.add(this,t,i,r,n)})}C.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,m=Q.get(e);if(m)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&C.find.matchesSelector(_e,i),n.guid||(n.guid=C.guid++),(u=m.events)||(u=m.events={}),(a=m.handle)||(a=m.handle=function(t){return void 0!==C&&C.event.triggered!==t.type?C.event.dispatch.apply(e,arguments):void 0}),c=(t=(t||"").match(R)||[""]).length;c--;)d=v=(s=ke.exec(t[c])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=C.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=C.event.special[d]||{},l=C.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&C.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),C.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,c,l,f,p,d,h,v,m=Q.hasData(e)&&Q.get(e);if(m&&(u=m.events)){for(c=(t=(t||"").match(R)||[""]).length;c--;)if(d=v=(s=ke.exec(t[c])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=C.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(e,l));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,m.handle)||C.removeEvent(e,d,m.handle),delete u[d])}else for(d in u)C.event.remove(e,d+t[c],n,r,!0);C.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=C.event.fix(e),u=new Array(arguments.length),c=(Q.get(this,"events")||{})[s.type]||[],l=C.event.special[s.type]||{};for(u[0]=s,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||!0!==c.disabled)){for(o=[],a={},n=0;n-1:C.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,je=/\s*$/g;function Le(e,t){return O(e,"table")&&O(11!==t.nodeType?t:t.firstChild,"tr")&&C(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,c;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),c=o.events))for(i in delete a.handle,a.events={},c)for(n=0,r=c[i].length;n1&&"string"==typeof h&&!g.checkClone&&Ne.test(h))return e.each(function(i){var o=e.eq(i);v&&(t[0]=h.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(o=(i=we(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=C.map(me(i,"script"),Ie)).length;f")},clone:function(e,t,n){var r,i,o,a,s,u,c,l=e.cloneNode(!0),f=C.contains(e.ownerDocument,e);if(!(g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(a=me(l),r=0,i=(o=me(e)).length;r0&&ge(a,!f&&me(e,"script")),l},cleanData:function(e){for(var t,n,r,i=C.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?C.event.remove(n,r):C.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),C.fn.extend({detach:function(e){return qe(this,e,!0)},remove:function(e){return qe(this,e)},text:function(e){return z(this,function(e){return void 0===e?C.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(C.cleanData(me(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!je.test(e)&&!ve[(de.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=Fe(e),i=Ue(e,t,r),o="border-box"===C.css(e,"boxSizing",!1,r),a=o;if(He.test(i)){if(!n)return i;i="auto"}return a=a&&(g.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===C.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}C.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ue(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=J(t),u=Ve.test(t),c=e.style;if(u||(t=Ye(s)),a=C.cssHooks[t]||C.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:c[t];"string"===(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n==n&&("number"===o&&(n+=i&&i[3]||(C.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(c[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,r){var i,o,a,s=J(t);return Ve.test(t)||(t=Ye(s)),(a=C.cssHooks[t]||C.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ue(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),C.each(["height","width"],function(e,t){C.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(C.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Xe,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=Fe(e),a="border-box"===C.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&g.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=C.css(e,t)),Qe(0,n,s)}}}),C.cssHooks.marginLeft=We(g.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ue(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),C.each({margin:"",padding:"",border:"Width"},function(e,t){C.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(C.cssHooks[e+t].set=Qe)}),C.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a1)}}),C.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||C.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(C.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=C.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=C.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){C.fx.step[e.prop]?C.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[C.cssProps[e.prop]]&&!C.cssHooks[e.prop]?e.elem[e.prop]=e.now:C.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},C.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},C.fx=tt.prototype.init,C.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(at):n.setTimeout(at,C.fx.interval),C.fx.tick())}function st(){return n.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){C.removeAttr(this,e)})}}),C.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?C.prop(e,t,n):(1===o&&C.isXMLDoc(e)||(i=C.attrHooks[t.toLowerCase()]||(C.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void C.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=C.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&O(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?C.removeAttr(e,n):e.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),function(e,t){var n=pt[t]||C.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}});var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function vt(e){return(e.match(R)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function gt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}C.fn.extend({prop:function(e,t){return z(this,C.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[C.propFix[e]||e]})}}),C.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&C.isXMLDoc(e)||(t=C.propFix[t]||t,i=C.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=C.find.attr(e,"tabindex");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(C.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){C.propFix[this.toLowerCase()]=this}),C.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(y(e))return this.each(function(t){C(this).addClass(e.call(this,t,mt(this)))});if((t=gt(e)).length)for(;n=this[u++];)if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(y(e))return this.each(function(t){C(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=gt(e)).length)for(;n=this[u++];)if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):y(e)?this.each(function(n){C(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r)for(i=0,o=C(this),a=gt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=mt(this))&&Q.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var yt=/\r/g;C.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=y(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,C(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=C.map(i,function(e){return null==e?"":e+""})),(t=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(yt,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:vt(C.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),C.each(["radio","checkbox"],function(){C.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=C.inArray(C(e).val(),t)>-1}},g.checkOn||(C.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),g.focusin="onfocusin"in n;var bt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};C.extend(C.event,{trigger:function(e,t,r,i){var o,s,u,c,l,f,p,d,v=[r||a],m=h.call(e,"type")?e.type:e,g=h.call(e,"namespace")?e.namespace.split("."):[];if(s=d=u=r=r||a,3!==r.nodeType&&8!==r.nodeType&&!bt.test(m+C.event.triggered)&&(m.indexOf(".")>-1&&(m=(g=m.split(".")).shift(),g.sort()),l=m.indexOf(":")<0&&"on"+m,(e=e[C.expando]?e:new C.Event(m,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:C.makeArray(t,[e]),p=C.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,t))){if(!i&&!p.noBubble&&!b(r)){for(c=p.delegateType||m,bt.test(c+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(r.ownerDocument||a)&&v.push(u.defaultView||u.parentWindow||n)}for(o=0;(s=v[o++])&&!e.isPropagationStopped();)d=s,e.type=o>1?c:p.bindType||m,(f=(Q.get(s,"events")||{})[e.type]&&Q.get(s,"handle"))&&f.apply(s,t),(f=l&&s[l])&&f.apply&&G(s)&&(e.result=f.apply(s,t),!1===e.result&&e.preventDefault());return e.type=m,i||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(v.pop(),t)||!G(r)||l&&y(r[m])&&!b(r)&&((u=r[l])&&(r[l]=null),C.event.triggered=m,e.isPropagationStopped()&&d.addEventListener(m,xt),r[m](),e.isPropagationStopped()&&d.removeEventListener(m,xt),C.event.triggered=void 0,u&&(r[l]=u)),e.result}},simulate:function(e,t,n){var r=C.extend(new C.Event,n,{type:e,isSimulated:!0});C.event.trigger(r,null,t)}}),C.fn.extend({trigger:function(e,t){return this.each(function(){C.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return C.event.trigger(e,t,n,!0)}}),g.focusin||C.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){C.event.simulate(t,e.target,C.event.fix(e))};C.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Q.access(r,t);i||r.addEventListener(e,n,!0),Q.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Q.access(r,t)-1;i?Q.access(r,t,i):(r.removeEventListener(e,n,!0),Q.remove(r,t))}}});var wt=n.location,_t=Date.now(),Ct=/\?/;C.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||C.error("Invalid XML: "+e),t};var Tt=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,St=/^(?:input|select|textarea|keygen)/i;function $t(e,t,n,r){var i;if(Array.isArray(t))C.each(t,function(t,i){n||Tt.test(e)?r(e,i):$t(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==_(t))r(e,t);else for(i in t)$t(e+"["+i+"]",t[i],n,r)}C.param=function(e,t){var n,r=[],i=function(e,t){var n=y(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!C.isPlainObject(e))C.each(e,function(){i(this.name,this.value)});else for(n in e)$t(n,e[n],t,i);return r.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=C.prop(this,"elements");return e?C.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!C(this).is(":disabled")&&St.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var Et=/%20/g,Ot=/#.*$/,jt=/([?&])_=[^&]*/,Nt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Dt=/^(?:GET|HEAD)$/,Lt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),Rt=a.createElement("a");function qt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(R)||[];if(y(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ht(e,t,n,r){var i={},o=e===Pt;function a(s){var u;return i[s]=!0,C.each(e[s]||[],function(e,s){var c=s(t,n,r);return"string"!=typeof c||o||i[c]?o?!(u=c):void 0:(t.dataTypes.unshift(c),a(c),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function Ft(e,t){var n,r,i=C.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&C.extend(!0,e,r),e}Rt.href=wt.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(wt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,C.ajaxSettings),t):Ft(C.ajaxSettings,e)},ajaxPrefilter:qt(It),ajaxTransport:qt(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,o,s,u,c,l,f,p,d,h=C.ajaxSetup({},t),v=h.context||h,m=h.context&&(v.nodeType||v.jquery)?C(v):C.event,g=C.Deferred(),y=C.Callbacks("once memory"),b=h.statusCode||{},x={},w={},_="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(l){if(!s)for(s={};t=Nt.exec(o);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==l&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||_;return r&&r.abort(t),k(0,t),this}};if(g.promise(T),h.url=((e||h.url||wt.href)+"").replace(Lt,wt.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(R)||[""],null==h.crossDomain){c=a.createElement("a");try{c.href=h.url,c.href=c.href,h.crossDomain=Rt.protocol+"//"+Rt.host!=c.protocol+"//"+c.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=C.param(h.data,h.traditional)),Ht(It,h,t,T),l)return T;for(p in(f=C.event&&h.global)&&0==C.active++&&C.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Dt.test(h.type),i=h.url.replace(Ot,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Et,"+")):(d=h.url.slice(i.length),h.data&&(h.processData||"string"==typeof h.data)&&(i+=(Ct.test(i)?"&":"?")+h.data,delete h.data),!1===h.cache&&(i=i.replace(jt,"$1"),d=(Ct.test(i)?"&":"?")+"_="+_t+++d),h.url=i+d),h.ifModified&&(C.lastModified[i]&&T.setRequestHeader("If-Modified-Since",C.lastModified[i]),C.etag[i]&&T.setRequestHeader("If-None-Match",C.etag[i])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&T.setRequestHeader("Content-Type",h.contentType),T.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Mt+"; q=0.01":""):h.accepts["*"]),h.headers)T.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(v,T,h)||l))return T.abort();if(_="abort",y.add(h.complete),T.done(h.success),T.fail(h.error),r=Ht(Pt,h,t,T)){if(T.readyState=1,f&&m.trigger("ajaxSend",[T,h]),l)return T;h.async&&h.timeout>0&&(u=n.setTimeout(function(){T.abort("timeout")},h.timeout));try{l=!1,r.send(x,k)}catch(e){if(l)throw e;k(-1,e)}}else k(-1,"No Transport");function k(e,t,a,s){var c,p,d,x,w,_=t;l||(l=!0,u&&n.clearTimeout(u),r=void 0,o=s||"",T.readyState=e>0?4:0,c=e>=200&&e<300||304===e,a&&(x=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(h,T,a)),x=function(e,t,n,r){var i,o,a,s,u,c={},l=e.dataTypes.slice();if(l[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(o=l.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=l.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=c[u+" "+o]||c["* "+o]))for(i in c)if((s=i.split(" "))[1]===o&&(a=c[u+" "+s[0]]||c["* "+s[0]])){!0===a?a=c[i]:!0!==c[i]&&(o=s[0],l.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(h,x,T,c),c?(h.ifModified&&((w=T.getResponseHeader("Last-Modified"))&&(C.lastModified[i]=w),(w=T.getResponseHeader("etag"))&&(C.etag[i]=w)),204===e||"HEAD"===h.type?_="nocontent":304===e?_="notmodified":(_=x.state,p=x.data,c=!(d=x.error))):(d=_,!e&&_||(_="error",e<0&&(e=0))),T.status=e,T.statusText=(t||_)+"",c?g.resolveWith(v,[p,_,T]):g.rejectWith(v,[T,_,d]),T.statusCode(b),b=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[T,h,c?p:d]),y.fireWith(v,[T,_]),f&&(m.trigger("ajaxComplete",[T,h]),--C.active||C.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return C.get(e,t,n,"json")},getScript:function(e,t){return C.get(e,void 0,t,"script")}}),C.each(["get","post"],function(e,t){C[t]=function(e,n,r,i){return y(n)&&(i=i||r,r=n,n=void 0),C.ajax(C.extend({url:e,type:t,dataType:i,data:n,success:r},C.isPlainObject(e)&&e))}}),C._evalUrl=function(e){return C.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},C.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=C(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return y(e)?this.each(function(t){C(this).wrapInner(e.call(this,t))}):this.each(function(){var t=C(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=y(e);return this.each(function(n){C(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){C(this).replaceWith(this.childNodes)}),this}}),C.expr.pseudos.hidden=function(e){return!C.expr.pseudos.visible(e)},C.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},Ut=C.ajaxSettings.xhr();g.cors=!!Ut&&"withCredentials"in Ut,g.ajax=Ut=!!Ut,C.ajaxTransport(function(e){var t,r;if(g.cors||Ut&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Bt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout(function(){t&&r()})},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),C.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),C.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return C.globalEval(e),e}}}),C.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),C.ajaxTransport("script",function(e){var t,n;if(e.crossDomain)return{send:function(r,i){t=C(" - - - - - @yield('footer') - - - diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 3e08789..4bcb65b 100755 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,64 +1,55 @@ -@extends('app') +@extends('layouts.app') @section('content') -

-

LMS by Pramesti Hatta K.

-
-
-
-
Login
-
- @if (count($errors) > 0) -
- Whoops! There were some problems with your input.

-
    - @foreach ($errors->all() as $error) -
  • {{ $error }}
  • - @endforeach -
-
- @endif +
-
- +
-
- -
- -
-
+
-
- -
- -
-
+

Login

+
-
-
-
- -
-
-
+ @if (count($errors) > 0) +
+ Whoops! There were some problems with your input.

+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif -
-
- + + + +
+ + + This is a required field. +
+ +
+ + +
+ +
+ + + Forgot Your Password? +
+ + +
+
+
- Forgot Your Password? -
-
- -
-
-
-
+ @endsection diff --git a/resources/views/auth/password.blade.php b/resources/views/auth/password.blade.php deleted file mode 100755 index 050224a..0000000 --- a/resources/views/auth/password.blade.php +++ /dev/null @@ -1,50 +0,0 @@ -@extends('app') - -@section('content') -
-
-
-
-
Reset Password
-
- @if (session('status')) -
- {{ session('status') }} -
- @endif - - @if (count($errors) > 0) -
- Whoops! There were some problems with your input.

-
    - @foreach ($errors->all() as $error) -
  • {{ $error }}
  • - @endforeach -
-
- @endif - -
- - -
- -
- -
-
- -
-
- -
-
-
-
-
-
-
-
-@endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..ad38245 --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
Reset Password
+ +
+ @if (session('status')) +
+ {{ session('status') }} +
+ @endif + +
+ {{ csrf_field() }} + +
+ + +
+ + + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..84ec010 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,70 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
Reset Password
+ +
+
+ {{ csrf_field() }} + + + +
+ + +
+ + + @if ($errors->has('email')) + + {{ $errors->first('email') }} + + @endif +
+
+ +
+ + +
+ + + @if ($errors->has('password')) + + {{ $errors->first('password') }} + + @endif +
+
+ +
+ +
+ + + @if ($errors->has('password_confirmation')) + + {{ $errors->first('password_confirmation') }} + + @endif +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 21771e4..5b70898 100755 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -1,4 +1,4 @@ -@extends('app') +@extends('layouts.app') @section('content')
@@ -18,7 +18,7 @@
@endif -
+
diff --git a/resources/views/auth/reset.blade.php b/resources/views/auth/reset.blade.php deleted file mode 100755 index 3c3536c..0000000 --- a/resources/views/auth/reset.blade.php +++ /dev/null @@ -1,59 +0,0 @@ -@extends('app') - -@section('content') -
-
-
-
-
Reset Password
-
- @if (count($errors) > 0) -
- Whoops! There were some problems with your input.

-
    - @foreach ($errors->all() as $error) -
  • {{ $error }}
  • - @endforeach -
-
- @endif - - - - - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
- -
-
- -
-
-
-
-
-@endsection diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php new file mode 100644 index 0000000..c706d18 --- /dev/null +++ b/resources/views/errors/401.blade.php @@ -0,0 +1,14 @@ +{{-- \resources\views\errors\401.blade.php --}} +@extends('layouts.app') + +@section('content') +
+

401
+ ACCESS DENIED

+

{{ $exception->getMessage() }}

+
+ +@endsection + + + diff --git a/resources/views/errors/_errors.blade.php b/resources/views/errors/_errors.blade.php index 954fd33..91ae3bb 100755 --- a/resources/views/errors/_errors.blade.php +++ b/resources/views/errors/_errors.blade.php @@ -1,8 +1,7 @@ - @if($errors->any()) -
    +
      @foreach($errors->all() as $error) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php new file mode 100644 index 0000000..d8437bf --- /dev/null +++ b/resources/views/home.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('content') +
      +
      +
      +
      +
      Dashboard
      + +
      + @if (session('status')) +
      + {{ session('status') }} +
      + @endif + + You are logged in! +
      +
      +
      +
      +
      +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..57afb11 --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,123 @@ + + + + + + + + + + + + @yield('title') RDR + + {{-- --}} + + + + + + + + + + + @yield('head') + + + + + + + + + @include('partials.nav') +
      +
        +
        + @yield('slider') + +
        +
        + @include('partials.flash') + @yield('content') +
        +
        + + + + + + {{-- --}} + + + @yield('scripts') + + + \ No newline at end of file diff --git a/resources/views/layouts/old_app.blade.php b/resources/views/layouts/old_app.blade.php new file mode 100644 index 0000000..8846226 --- /dev/null +++ b/resources/views/layouts/old_app.blade.php @@ -0,0 +1,80 @@ + + + + + + + + + + + {{ config('app.name', 'Laravel') }} + + + + + +
        + + + @yield('content') +
        + + + + + diff --git a/resources/views/lms/books.blade.php b/resources/views/lms/books.blade.php deleted file mode 100755 index 210a0cc..0000000 --- a/resources/views/lms/books.blade.php +++ /dev/null @@ -1,54 +0,0 @@ -@extends('app') - -@section('content') - -

        Books

        - -
        - -

        - - - - - - - - - - - - - - - - - @foreach($books as $book) - - - - - - - - - - - - - @endforeach - - - -
        TitleAuthorYearStockCategoryShelf
        {{ $book->title }}{{ $book->author }}{{ $book->year }} - @if($book->stock > 0) - Available - @elseif($book->stock == 0) - - - @endif - {{ $book->category->category }}{{ $book->shelf->shelf }}
        - - -
        - -@stop \ No newline at end of file diff --git a/resources/views/lms/index.blade.php b/resources/views/lms/index.blade.php deleted file mode 100755 index 3b9384b..0000000 --- a/resources/views/lms/index.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('app') - -@section('content') - -

        MOTHERFUCKING LMS

        - -@stop \ No newline at end of file diff --git a/resources/views/lms/peminjaman/laporan.blade.php b/resources/views/lms/peminjaman/laporan.blade.php deleted file mode 100755 index f9458c5..0000000 --- a/resources/views/lms/peminjaman/laporan.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('app') - -@section('content') - -

        Laporan

        - -
        - - - - - - - - - - - - - - - - @foreach($transactions as $transaction) - - - - - - - - - - - - - @endforeach - - - -
        StudentBookBorrowed AtFines
        What You Gonna Do
        {{ $transaction->student->name }}{{ $transaction->book->title }}{{ date('d-M-y', $transaction->borrowed_at) }}Rp. {{ $transaction->fines }}  Pengembalian  Perpanjang Masa Peminjaman
        - -
        -@stop \ No newline at end of file diff --git a/resources/views/lms/peminjaman/peminjaman.blade.php b/resources/views/lms/peminjaman/peminjaman.blade.php deleted file mode 100755 index b623c12..0000000 --- a/resources/views/lms/peminjaman/peminjaman.blade.php +++ /dev/null @@ -1,73 +0,0 @@ -@extends('app') - -@section('content') - -

        Peminjaman

        - -
        - - {!! Form::open(['route' => 'peminjaman.post']) !!} - -
        - {!! Form::label('student_id', 'Student..') !!} - {!! Form::select('student_id', $students, null, ['id' => 'student_id', 'class' => 'form-control']) !!} -
        - -
        - - - -
        - -
        - - -
        - -
        - {!! Form::submit('Pinjam', ['class' => 'btn btn-primary form-control']) !!} -
        - - - {!! Form::close() !!} - - -
        -@stop - -@section('footer') - - - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/category/_form.blade.php b/resources/views/lms/settings/category/_form.blade.php deleted file mode 100755 index a0c3e15..0000000 --- a/resources/views/lms/settings/category/_form.blade.php +++ /dev/null @@ -1,10 +0,0 @@ -
        - {!! Form::label('category', $categoryLabel) !!} - {!! Form::text('category', null, ['class' => 'form-control']) !!} -
        - -
        - {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!} -
        - -@include('errors._errors') \ No newline at end of file diff --git a/resources/views/lms/settings/category/add.blade.php b/resources/views/lms/settings/category/add.blade.php deleted file mode 100755 index dde7afa..0000000 --- a/resources/views/lms/settings/category/add.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('app') - -@section('content') - -

        Add Your Fucking Category

        - -
        - - - BACK - - -
        - -
        - - {!! Form::open(['route' => 'settings.category.post']) !!} - - @include('lms/settings/category/_form', ['submitButtonText' => 'Add Category', 'categoryLabel' => 'Add new Category.']) - - {!! Form::close() !!} - -
        - - - - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/category/category.blade.php b/resources/views/lms/settings/category/category.blade.php deleted file mode 100755 index 7e1e234..0000000 --- a/resources/views/lms/settings/category/category.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('app') - -@section('content') - -

        Category

        - -
        - - - ADD NEW MOTHERFUCKING CATEGORY - - -

        - - - - - - - - - - - - - @foreach($categories as $category) - - - - - - - - - @endforeach - - - -
        CategoryOptions
        {{ $category->category }}   -
        - - -
        - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/category/edit.blade.php b/resources/views/lms/settings/category/edit.blade.php deleted file mode 100755 index 587edf7..0000000 --- a/resources/views/lms/settings/category/edit.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('app') - -@section('content') - -

        Edit Your Fucking Category

        - -
        - - - BACK - - -
        - -
        - - {!! Form::model($category, ['method' => 'PATCH', 'route' => ['settings.category.update', $category->id]]) !!} - - @include('lms/settings/category/_form', ['submitButtonText' => 'Edit Category', 'categoryLabel' => 'Edit Category.']) - - {!! Form::close() !!} - -
        - - - - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/fine/_form.blade.php b/resources/views/lms/settings/fine/_form.blade.php deleted file mode 100755 index 6eea131..0000000 --- a/resources/views/lms/settings/fine/_form.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -
        - {!! Form::label('days', $daysLabel) !!} - {!! Form::text('days', null, ['class' => 'form-control']) !!} -
        - -
        - {!! Form::label('fines', $finesLabel) !!} - {!! Form::text('fines', null, ['class' => 'form-control']) !!} -
        - -
        - {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!} -
        - -@include('errors._errors') \ No newline at end of file diff --git a/resources/views/lms/settings/fine/edit.blade.php b/resources/views/lms/settings/fine/edit.blade.php deleted file mode 100755 index 13b18fb..0000000 --- a/resources/views/lms/settings/fine/edit.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('app') - -@section('content') - -

        Edit Your Fucking Fines

        - -
        - - - BACK - - -
        - -
        - - {!! Form::model($fine, ['method' => 'PATCH', 'route' => ['settings.fines.update', $fine->id]]) !!} - - @include('lms/settings/fine/_form', ['submitButtonText' => 'Edit Fines', 'daysLabel' => 'Days..', 'finesLabel' => 'Fines..']) - - {!! Form::close() !!} - -
        - - - - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/fine/fine.blade.php b/resources/views/lms/settings/fine/fine.blade.php deleted file mode 100755 index 1151fc7..0000000 --- a/resources/views/lms/settings/fine/fine.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@extends('app') - -@section('content') - -

        FINES

        - -
        - - -

        - - - - - - - - - - - - - - @foreach($fines as $fine) - - - - - - - - - - @endforeach - - - -
        DaysFinesOptions
        {{ $fine->days }}{{ $fine->fines }}
        - - - -
        - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/student/_form.blade.php b/resources/views/lms/settings/student/_form.blade.php deleted file mode 100755 index 14e0cc6..0000000 --- a/resources/views/lms/settings/student/_form.blade.php +++ /dev/null @@ -1,10 +0,0 @@ -
        - {!! Form::label('name', 'Name..') !!} - {!! Form::text('name', null, ['class' => 'form-control']) !!} -
        - -
        - {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!} -
        - -@include('errors._errors') \ No newline at end of file diff --git a/resources/views/lms/settings/student/add.blade.php b/resources/views/lms/settings/student/add.blade.php deleted file mode 100755 index 68441a6..0000000 --- a/resources/views/lms/settings/student/add.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('app') - -@section('content') - -

        Add Your Fucking Student

        - -
        - - - BACK - - -
        - -
        - - {!! Form::open(['route' => 'settings.student.post']) !!} - - @include('lms/settings/student/_form', ['submitButtonText' => 'Add Student']) - - {!! Form::close() !!} - -
        - - - - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/student/edit.blade.php b/resources/views/lms/settings/student/edit.blade.php deleted file mode 100755 index 604b633..0000000 --- a/resources/views/lms/settings/student/edit.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('app') - -@section('content') - -

        Edit Your Fucking Student

        - -
        - - - BACK - - -
        - -
        - - {!! Form::model($student, ['method' => 'PATCH', 'route' => ['settings.student.update', $student->id]]) !!} - - @include('lms/settings/student/_form', ['submitButtonText' => 'Edit Student']) - - {!! Form::close() !!} - -
        - - - - -@stop \ No newline at end of file diff --git a/resources/views/lms/settings/student/student.blade.php b/resources/views/lms/settings/student/student.blade.php deleted file mode 100755 index 53063cd..0000000 --- a/resources/views/lms/settings/student/student.blade.php +++ /dev/null @@ -1,64 +0,0 @@ -@extends('app') - -@section('content') - -

        Student

        - -
        - - - ADD NEW MOTHERFUCKING STUDENT - - -

        - - - - - - - - - - - - - - - - @foreach($students as $student) - - - - - - - - - - - - - @endforeach - - - -
        NameRegistered AtBorrowStatus
        Options
        {{ $student->name }}{{ date('d-M-y', $student->registered_at) }}{{ $student->borrow }} - @if($student->status == 1) - Active - @else - - - @endif - - @if($student->status == 1) - Matikan Masa Aktif - @else - Perpanjang Masa Aktif - @endif -   -
        - - -
        - -@stop \ No newline at end of file diff --git a/resources/views/oai/oai.blade.php b/resources/views/oai/oai.blade.php new file mode 100644 index 0000000..15c5adc --- /dev/null +++ b/resources/views/oai/oai.blade.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/resources/views/partials/flash.blade.php b/resources/views/partials/flash.blade.php index d29b12b..e385439 100755 --- a/resources/views/partials/flash.blade.php +++ b/resources/views/partials/flash.blade.php @@ -1,9 +1,7 @@ @if(Session::has('flash_message')) -
        - +
        {{ session('flash_message') }} -
        @endif \ No newline at end of file diff --git a/resources/views/partials/nav.blade.php b/resources/views/partials/nav.blade.php index 7822905..daf5eb2 100755 --- a/resources/views/partials/nav.blade.php +++ b/resources/views/partials/nav.blade.php @@ -1,61 +1,134 @@ -
        - \ No newline at end of file diff --git a/resources/views/publish/create-step1.blade.php b/resources/views/publish/create-step1.blade.php new file mode 100644 index 0000000..4c617a5 --- /dev/null +++ b/resources/views/publish/create-step1.blade.php @@ -0,0 +1,50 @@ +@extends('layouts.app') + +@section('title', 'Publish') + +@section('content') + +
        +

        Publish New Dataset - Step 1

        +
        + +{{--

        Dokumenttyp und Datei wählen

        --}} +{{--
        --}} +{!! Form::model($dataset, ['method' => 'POST', 'route' => ['dataset.store1'], 'class' => 'pure-form']) !!} + + {{ csrf_field() }} +
        + + Datensatztyp +
        +

        Bitte wählen Sie einen Datensatztyp aus der Liste aus.

        + +
        + {!! Form::select('Type', Lang::get('doctypes'), null, ['id' => 'type', 'placeholder' => '-- select type --']) !!} +
        +
        +
        + +
        + Einräumung eines einfachen Nutzungsrechts +
        + Ich habe diese rechtlichen Hinweise gelesen und bin damit einverstanden. + * + + + +
        +
        + +
        +
        + +
        +{!! Form::close() !!} + +@include('errors._errors') + +@stop \ No newline at end of file diff --git a/resources/views/publish/create-step2.blade.php b/resources/views/publish/create-step2.blade.php new file mode 100644 index 0000000..476e9dd --- /dev/null +++ b/resources/views/publish/create-step2.blade.php @@ -0,0 +1,106 @@ +@extends('layouts.app') + +@section('title', 'Publish') + +@section('content') + +
        +

        Publish New Dataset - Step 2

        +
        + +

        Attribute eingeben

        +{{--
        --}} +{!! Form::model($dataset, ['method' => 'post', 'files' => true , 'route' => ['dataset.store2'], 'class' => 'pure-form']) !!} + +
        + General +
        + +
        + {!! Form::label('Type', 'Type..') !!} +
        + {!! Form::select('Type', Lang::get('doctypes'), null, ['id' => 'type', 'placeholder' => '-- select type --']) !!} +
        + +
        + {!! Form::label('CreatingCorporation', 'Creating Corporation') !!} + {!! Form::text('CreatingCorporation', null, ['class' => 'pure-u-23-24']) !!} +
        + +
        + {!! Form::label('EmbargoDate', 'Embargo Date') !!} + {!! Form::date('EmbargoDate', null, ['placeholder' => date('y-m-d'), 'class' => 'pure-u-23-24']) !!} + EmbargoDate is optional +
        + + + + +
        +
        + +
        + Main Title & Abstract +
        + + +
        + {!! Form::label('TitleMain', 'Main Title ') !!} + {!! Form::text('TitleMain[Value]', null, ['class' => 'pure-u-23-24']) !!} +
        +
        + {!! Form::label('language', 'Title Language..') !!} +
        + {!! Form::select('TitleMain[Language]', $languages, null, ['placeholder' => '--no language--']) !!} +
        +
        + +
        + {!! Form::label('TitleAbstract', 'Main Abstract ') !!} + {!! Form::text('TitleAbstract[Value]', null, ['class' => 'pure-u-23-24']) !!} +
        +
        + {!! Form::label('language', 'Abstract Language..') !!} +
        + {!! Form::select('TitleAbstract[Language]', $languages, null, ['placeholder' => '--no language--']) !!} +
        +
        +
        +
        + +
        + Files +
        +
        + {!! Form::label('dataset_file', 'Dataset File') !!} + + Please upload a valid image file. Size of image should not be more than 2MB. +
        +
        +
        + + + +
        +
        + +
        + @include('errors._errors') +{!! Form::close() !!} + + + @if(isset($dataset['DatasetFile'])) + + {{ csrf_field() }} + + + @endif + +@stop \ No newline at end of file diff --git a/resources/views/publish/create-step3.blade.php b/resources/views/publish/create-step3.blade.php new file mode 100644 index 0000000..c4d830d --- /dev/null +++ b/resources/views/publish/create-step3.blade.php @@ -0,0 +1,67 @@ +@extends('layouts.app') + +@section('title', 'Publish') + +@section('content') +

        Add New Dataset - Step 3

        +
        +

        Review Dataset Details

        +
        + {{ csrf_field() }} + + + + + + + + + + + + + + + + + @if(isset($dataset['TitleMain'])) + + @endif + + + + + @if(isset($dataset['TitleAbstract'])) + + @endif + + + + + + + + + + + + {{-- + + + --}} +
        Dataset Type:{{ $dataset['Type'] }}
        Creating Corporation:{{ $dataset['CreatingCorporation'] or '' }}
        Embargo Date:{{ $dataset['EmbargoDate'] or '' }}
        Main Title:{{ $dataset['TitleMain']['Value'] }}
        Main Abstract:{{ $dataset['TitleAbstract']['Value'] }}
        Belongs To Bibliography:{{ isset($dataset['BelongsToBibliography']) ? 'Yes' : 'No' }}
        Product Image:Product Image
        Product Image:Product Image
        +
        + Back to Step 1 + Back to Step 2 + +
        + + +
        + +@include('errors._errors') + +@stop \ No newline at end of file diff --git a/resources/views/rdr/borrow/borrow.blade.php b/resources/views/rdr/borrow/borrow.blade.php new file mode 100644 index 0000000..d185a1c --- /dev/null +++ b/resources/views/rdr/borrow/borrow.blade.php @@ -0,0 +1,74 @@ +@extends('layouts.app') + +@section('content') + +

        Borrow

        + +
        + + {!! Form::open(['route' => 'borrow.post']) !!} + +
        + {!! Form::label('student_id', 'Student..') !!} + + + {!! Form::select('person_id', $persons, null, ['id' => 'person_id', 'class' => 'form-control']) !!} +
        + +
        + {!! Form::label('project', 'Project..') !!} + + + +
        + +
        + {!! Form::label('book_id', 'Book..') !!} + + +
        + +
        + {!! Form::submit('Borrow', ['class' => 'btn btn-primary form-control']) !!} +
        + + + {!! Form::close() !!} + + +
        +@stop + +@section('scripts') + + + +@stop \ No newline at end of file diff --git a/resources/views/lms/peminjaman/histori.blade.php b/resources/views/rdr/borrow/histori.blade.php old mode 100755 new mode 100644 similarity index 82% rename from resources/views/lms/peminjaman/histori.blade.php rename to resources/views/rdr/borrow/histori.blade.php index 408692f..6f51f06 --- a/resources/views/lms/peminjaman/histori.blade.php +++ b/resources/views/rdr/borrow/histori.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Histori

        +

        Histori

        @@ -22,14 +22,12 @@ @foreach($transactions as $transaction) - - - {{ $transaction->student->name }} + + {{ $transaction->student->last_name }} {{ $transaction->book->title }} {{ date('d-M-y', $transaction->borrowed_at) }} {{ date('d-M-y', $transaction->returned_at) }} {{ $transaction->fines }} - @endforeach diff --git a/resources/views/rdr/borrow/report.blade.php b/resources/views/rdr/borrow/report.blade.php new file mode 100644 index 0000000..5c283ee --- /dev/null +++ b/resources/views/rdr/borrow/report.blade.php @@ -0,0 +1,41 @@ +@extends('layouts.app') + +@section('content') + +

        Bericht

        + +
        + + + + + + + + + + + + + + + @foreach($transactions as $transaction) + + + + + + + + + + + + @endforeach + + + +
        PersonBookBorrowed At
        What You Gonna Do
        {{ $transaction->student->last_name }}{{ $transaction->book->title }}{{ date('d-M-y', $transaction->borrowed_at) }}  return  extend borrow time
        + +
        +@stop \ No newline at end of file diff --git a/resources/views/rdr/document/documents.blade.php b/resources/views/rdr/document/documents.blade.php new file mode 100644 index 0000000..185a90e --- /dev/null +++ b/resources/views/rdr/document/documents.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.app') + +@section('content') + +

        Documents

        + +

        + + + + + + + + + + + + + @foreach($documents as $document) + + + + + + + + @endforeach + + + +
        iddocument type
        {{ $document->id }}{{ $document->type }}
        + + + + +@stop \ No newline at end of file diff --git a/resources/views/rdr/document/show.blade.php b/resources/views/rdr/document/show.blade.php new file mode 100644 index 0000000..b185d1c --- /dev/null +++ b/resources/views/rdr/document/show.blade.php @@ -0,0 +1,33 @@ +@extends('layouts.app') + +@section('content') + +
        +
        +
        + {{-- BACK --}} + + BACK + + +
        + @foreach ($document->titles as $title) +

        {{ $title->value }}

        + @endforeach +
        + +
        +
        +
          + @foreach ($document->abstracts as $abstract) +
        • {{ $abstract->value }}

          + @endforeach +
        +
        + +
        + + +
        + +@stop \ No newline at end of file diff --git a/resources/views/rdr/home/about.blade.php b/resources/views/rdr/home/about.blade.php new file mode 100644 index 0000000..c54d862 --- /dev/null +++ b/resources/views/rdr/home/about.blade.php @@ -0,0 +1,24 @@ +@extends('layouts.app') + +@section('title', Lang::get('resources.home_about_pagetitle')) + +@section('content') + +
        + +
        +
        +

        + @lang('resources.home_about_title') +

        + +
        +

        + @lang('resources.home_about_content') +

        +
        +
        +
        + +
        +@endsection \ No newline at end of file diff --git a/resources/views/rdr/home/contact.blade.php b/resources/views/rdr/home/contact.blade.php new file mode 100644 index 0000000..f6af0bb --- /dev/null +++ b/resources/views/rdr/home/contact.blade.php @@ -0,0 +1,55 @@ +@extends('layouts.app') + +@section('title', Lang::get('resources.home_index_contact_pagetitle')) + +@section('content') + + +
        + +
        +
        +

        Kontakt

        +
        + {!! Form::open(array('class' => 'pure-form pure-form-stacked')) !!} + +
        +
        + {!! Form::label('name', 'Your Name') !!} + {!! Form::text('name', null, ['class' => 'pure-input-1']) !!} + This is a required field. +
        + +
        + {!! Form::label('email', 'E-mail Address') !!} + {!! Form::text('email', null, ['class' => 'pure-input-1']) !!} +
        + +
        + {!! Form::label('msg', 'Message') !!} + {!! Form::textarea('msg', null, ['class' => 'pure-input-1', 'placeholder' => "Enter something here..."]) !!} +
        + +
        + {!! Form::submit('Send', ['class' => 'pure-button pure-button-primary']) !!} +
        + +
        + + {!! Form::close() !!} +
        +
        +
        + +
        + +
        + +
        + +@endsection \ No newline at end of file diff --git a/resources/views/rdr/home/imprint.blade.php b/resources/views/rdr/home/imprint.blade.php new file mode 100644 index 0000000..cb57950 --- /dev/null +++ b/resources/views/rdr/home/imprint.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.app') + +@section('title', Lang::get('resources.home_index_imprint_pagetitle')) + +@section('content') + + +

        + + @lang('resources.home_index_imprint_title') + +

        + +
        +

        + @lang('resources.help_content_imprint') +

        +
        + +@endsection \ No newline at end of file diff --git a/resources/views/rdr/home/index.blade.php b/resources/views/rdr/home/index.blade.php new file mode 100644 index 0000000..07e6fa9 --- /dev/null +++ b/resources/views/rdr/home/index.blade.php @@ -0,0 +1,42 @@ +@extends('layouts.app') + +@section('slider') +
        +
        +
        +
        +

        + RDR is a data repository for the research community with secure preservation and data publication. +

        +
        + +
        +
        +
        +@endsection + +@section('content') +
        +
        +
        +

        DATA RESEARCH REPOSITORY

        +
        +
        +
        + +
        +
        +
        + +

        @lang('resources.home_index_welcome')

        + +
        +
        +
        +
        +

        @lang('resources.home_index_instructions')

        +
        +
        +
        + +@endsection diff --git a/resources/views/rdr/home/news.blade.php b/resources/views/rdr/home/news.blade.php new file mode 100644 index 0000000..c0c43e0 --- /dev/null +++ b/resources/views/rdr/home/news.blade.php @@ -0,0 +1,36 @@ +@extends('layouts.app') + +@section('title', Lang::get('resources.home_news_pagetitle')) + +@section('content') + +
        + +
        +
        + +

        + RDR included in re3data.org list of research data repositories +

        +

        Published: 27.07.2019

        +

        + re3data.org is a global registry of research data repositories. The registry covers research data repositories from + different academic disciplines. re3data.org presents repositories for the permanent storage and access to datasets + for researchers, funding bodies, publishers and academic institutions. re3data.org aims to promote a culture of + sharing and increased access to research data. +

        +

        + re3data.org helps researchers to find appropriate repositories for the storage and access of research data. + Further, it can be used by funding organisations to promote permanent access to research data from their research projects. + In addition re3data.org offers publishers and academic institutions a tool for the identification of research data repositories + where scientists can deposit their data. +

        + +
        +
        + +
        + +@endsection \ No newline at end of file diff --git a/resources/views/lms/settings/book/_form.blade.php b/resources/views/rdr/settings/book/_form.blade.php old mode 100755 new mode 100644 similarity index 70% rename from resources/views/lms/settings/book/_form.blade.php rename to resources/views/rdr/settings/book/_form.blade.php index 0ab70d3..4a3d6c4 --- a/resources/views/lms/settings/book/_form.blade.php +++ b/resources/views/rdr/settings/book/_form.blade.php @@ -10,7 +10,7 @@
        {!! Form::label('year', 'Year..') !!} - {!! Form::select('year', $years, null, ['class' => 'form-control']) !!} + {!! Form::select('year', $years, null, ['id' => 'year', 'class' => 'form-control', 'placeholder' => 'None']) !!}
        @@ -19,14 +19,14 @@
        - {!! Form::label('category_id', 'Category..') !!} - {!! Form::select('category_id', $categories, null, ['id' => 'category_id', 'class' => 'form-control']) !!} + {!! Form::label('project_id', 'Project..') !!} + {!! Form::select('project_id', $categories, null, ['id' => 'project_id', 'class' => 'form-control']) !!}
        -
        +{{--
        {!! Form::label('shelf_id', 'Shelf..') !!} {!! Form::select('shelf_id', $shelves, null, ['id' => 'shelf_id', 'class' => 'form-control']) !!} -
        +
        --}}
        {!! Form::submit($submitButtonText, ['class' => 'btn btn-primary form-control']) !!} diff --git a/resources/views/lms/settings/book/add.blade.php b/resources/views/rdr/settings/book/add.blade.php old mode 100755 new mode 100644 similarity index 72% rename from resources/views/lms/settings/book/add.blade.php rename to resources/views/rdr/settings/book/add.blade.php index e27c3cc..4c61dc0 --- a/resources/views/lms/settings/book/add.blade.php +++ b/resources/views/rdr/settings/book/add.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Add Your Book

        +

        Add Your Book

        @@ -16,7 +16,7 @@ {!! Form::open(['route' => 'settings.book.post']) !!} - @include('lms/settings/book/_form', ['submitButtonText' => 'Add Book']) + @include('rdr/settings/book/_form', ['submitButtonText' => 'Add Book']) {!! Form::close() !!} diff --git a/resources/views/lms/settings/book/book.blade.php b/resources/views/rdr/settings/book/book.blade.php old mode 100755 new mode 100644 similarity index 64% rename from resources/views/lms/settings/book/book.blade.php rename to resources/views/rdr/settings/book/book.blade.php index 5b9d4b7..67c0678 --- a/resources/views/lms/settings/book/book.blade.php +++ b/resources/views/rdr/settings/book/book.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Book

        +

        Book

        @@ -20,8 +20,7 @@ Author Year Stock - Category - Shelf + Project Options @@ -30,17 +29,20 @@ @foreach($books as $book) - - + {{ $book->title }} {{ $book->author }} {{ $book->year }} {{ $book->stock }} - {{ $book->category->category }} - {{ $book->shelf->shelf }} -   - - + @if($book->hasProject()) + {{ $book->project->name }} + @else + -- + @endif + +   + + @endforeach diff --git a/resources/views/lms/settings/book/edit.blade.php b/resources/views/rdr/settings/book/edit.blade.php old mode 100755 new mode 100644 similarity index 56% rename from resources/views/lms/settings/book/edit.blade.php rename to resources/views/rdr/settings/book/edit.blade.php index e6fd1d2..07232a0 --- a/resources/views/lms/settings/book/edit.blade.php +++ b/resources/views/rdr/settings/book/edit.blade.php @@ -1,12 +1,12 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Edit Your Fucking Book

        +

        Edit Your Book

        - - + + BACK @@ -16,7 +16,7 @@ {!! Form::model($book, ['method' => 'PATCH', 'route' => ['settings.book.update', $book->id]]) !!} - @include('lms/settings/book/_form', ['submitButtonText' => 'Edit Book']) + @include('rdr/settings/book/_form', ['submitButtonText' => 'Edit Book', 'bookLabel' => 'Edit Book.']) {!! Form::close() !!} diff --git a/resources/views/rdr/settings/collection/collection.blade.php b/resources/views/rdr/settings/collection/collection.blade.php new file mode 100644 index 0000000..aadcda5 --- /dev/null +++ b/resources/views/rdr/settings/collection/collection.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.app') + +@section('content') + +

        Collections

        + +
        + + + ADD NEW COLLECTION + + +

        + + + + + + + + + + + + + @foreach($collections as $collection) + + + + + + + + + + @endforeach + + + +
        CollectionidDocument id'sOptions
        {{ $collection->name }}{{ $collection->id }} + @foreach ($collection->documents as $document) +

        document id: {{ $document->id }}

        + @endforeach + +
        + + + + + + +
        + +
        + {{ $collections->links('vendor.pagination.default') }} +
        + +
        + +@stop \ No newline at end of file diff --git a/resources/views/lms/settings/periode/_form.blade.php b/resources/views/rdr/settings/periode/_form.blade.php old mode 100755 new mode 100644 similarity index 100% rename from resources/views/lms/settings/periode/_form.blade.php rename to resources/views/rdr/settings/periode/_form.blade.php diff --git a/resources/views/lms/settings/periode/edit.blade.php b/resources/views/rdr/settings/periode/edit.blade.php old mode 100755 new mode 100644 similarity index 76% rename from resources/views/lms/settings/periode/edit.blade.php rename to resources/views/rdr/settings/periode/edit.blade.php index 2b405ad..213c89f --- a/resources/views/lms/settings/periode/edit.blade.php +++ b/resources/views/rdr/settings/periode/edit.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Edit Your Fucking Fines

        +

        Edit Your Periode

        @@ -16,7 +16,7 @@ {!! Form::model($periode, ['method' => 'PATCH', 'route' => ['settings.periode.update', $periode->id]]) !!} - @include('lms/settings/periode/_form', ['submitButtonText' => 'Edit Periode', 'daysLabel' => 'Days..']) + @include('rdr/settings/periode/_form', ['submitButtonText' => 'Edit Periode', 'daysLabel' => 'Days..']) {!! Form::close() !!} diff --git a/resources/views/lms/settings/periode/periode.blade.php b/resources/views/rdr/settings/periode/periode.blade.php old mode 100755 new mode 100644 similarity index 86% rename from resources/views/lms/settings/periode/periode.blade.php rename to resources/views/rdr/settings/periode/periode.blade.php index bce5d0f..ded2105 --- a/resources/views/lms/settings/periode/periode.blade.php +++ b/resources/views/rdr/settings/periode/periode.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        PERIODE

        +

        PERIODE

        @@ -22,11 +22,9 @@ @foreach($periodes as $periode) - - + {{ $periode->days }} - @endforeach diff --git a/resources/views/lms/settings/shelf/_form.blade.php b/resources/views/rdr/settings/shelf/_form.blade.php old mode 100755 new mode 100644 similarity index 100% rename from resources/views/lms/settings/shelf/_form.blade.php rename to resources/views/rdr/settings/shelf/_form.blade.php diff --git a/resources/views/lms/settings/shelf/add.blade.php b/resources/views/rdr/settings/shelf/add.blade.php old mode 100755 new mode 100644 similarity index 73% rename from resources/views/lms/settings/shelf/add.blade.php rename to resources/views/rdr/settings/shelf/add.blade.php index 1a58223..c4d5d1d --- a/resources/views/lms/settings/shelf/add.blade.php +++ b/resources/views/rdr/settings/shelf/add.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Add Your Fucking Category

        +

        Add Your Shelf

        @@ -16,7 +16,7 @@ {!! Form::open(['route' => 'settings.shelf.post']) !!} - @include('lms/settings/shelf/_form', ['submitButtonText' => 'Add Shelf', 'shelfLabel' => 'Add new Shelf.']) + @include('rdr/settings/shelf/_form', ['submitButtonText' => 'Add Shelf', 'shelfLabel' => 'Add new Shelf.']) {!! Form::close() !!} diff --git a/resources/views/lms/settings/shelf/edit.blade.php b/resources/views/rdr/settings/shelf/edit.blade.php old mode 100755 new mode 100644 similarity index 76% rename from resources/views/lms/settings/shelf/edit.blade.php rename to resources/views/rdr/settings/shelf/edit.blade.php index d320ed3..8549590 --- a/resources/views/lms/settings/shelf/edit.blade.php +++ b/resources/views/rdr/settings/shelf/edit.blade.php @@ -1,8 +1,8 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Edit Your Fucking Shelf

        +

        Edit Your Shelf

        @@ -16,7 +16,7 @@ {!! Form::model($shelf, ['method' => 'PATCH', 'route' => ['settings.shelf.update', $shelf->id]]) !!} - @include('lms/settings/shelf/_form', ['submitButtonText' => 'Edit Shelf', 'shelfLabel' => 'Edit Shelf.']) + @include('rdr/settings/shelf/_form', ['submitButtonText' => 'Edit Shelf', 'shelfLabel' => 'Edit Shelf.']) {!! Form::close() !!} diff --git a/resources/views/lms/settings/shelf/shelf.blade.php b/resources/views/rdr/settings/shelf/shelf.blade.php old mode 100755 new mode 100644 similarity index 65% rename from resources/views/lms/settings/shelf/shelf.blade.php rename to resources/views/rdr/settings/shelf/shelf.blade.php index 159db02..74b4dc5 --- a/resources/views/lms/settings/shelf/shelf.blade.php +++ b/resources/views/rdr/settings/shelf/shelf.blade.php @@ -1,36 +1,34 @@ -@extends('app') +@extends('layouts.app') @section('content') -

        Shelf

        +

        Shelf

        - ADD NEW MOTHERFUCKING SHELF + ADD NEW SHELF

        - - + - @foreach($shelves as $shelf) - - + - - + @endforeach diff --git a/resources/views/rdr/setup/imprint/edit.blade.php b/resources/views/rdr/setup/imprint/edit.blade.php new file mode 100644 index 0000000..9c3137a --- /dev/null +++ b/resources/views/rdr/setup/imprint/edit.blade.php @@ -0,0 +1,29 @@ +@extends('app') + +@section('content') + +
        +
        +
        + {!! Form::open(array('class' => 'pure-form pure-form-stacked')) !!} + +
        + +
        + + +
        + +
        + + +
        + +
        + + {!! Form::close() !!} +
        +
        +
        + +@endsection diff --git a/resources/views/rdr/sitelink/index.blade.php b/resources/views/rdr/sitelink/index.blade.php new file mode 100644 index 0000000..03828d2 --- /dev/null +++ b/resources/views/rdr/sitelink/index.blade.php @@ -0,0 +1,50 @@ +@extends('layouts.app') + +@section('content') +
        +
        +
        +

        Sitelinks for Web Crawlers

        + + + + + + + + + +
        +
          +
        1. +
          +
          +

          + type; $document->id; ?> + +

          +
          +
          server_date_published->toDayDateTimeString() ?> +
          +
          + @foreach ($document->authors as $author) + Author: {{ $author->getFullName() }} +
          + @endforeach + + @foreach ($document->titles as $title) + Main Title: {{ $title->value }} +
          + @endforeach +
          + +
          +
        2. +
        +
        + + +
        +
        +
        + @endsection diff --git a/resources/views/rdr/solrsearch/index.blade.php b/resources/views/rdr/solrsearch/index.blade.php new file mode 100644 index 0000000..6200a0a --- /dev/null +++ b/resources/views/rdr/solrsearch/index.blade.php @@ -0,0 +1,75 @@ +@extends('layouts.app') + +@section('title', Lang::get('resources.solrsearch_title_simple')) + +@section('content') + + + + +
        + +
        +
        +

        Suche

        + @include('rdr.solrsearch.simpleSearchForm') + + + +
        +
        + +
        + +@endsection + + +@section('scripts') + + @endsection diff --git a/resources/views/rdr/solrsearch/pagination.blade.php b/resources/views/rdr/solrsearch/pagination.blade.php new file mode 100644 index 0000000..0cc6bdd --- /dev/null +++ b/resources/views/rdr/solrsearch/pagination.blade.php @@ -0,0 +1,22 @@ + + +
        + +

        + + + +

        + + +
        diff --git a/resources/views/rdr/solrsearch/simpleSearchForm.blade.php b/resources/views/rdr/solrsearch/simpleSearchForm.blade.php new file mode 100644 index 0000000..095f2e4 --- /dev/null +++ b/resources/views/rdr/solrsearch/simpleSearchForm.blade.php @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/resources/views/settings/document/_form.blade.php b/resources/views/settings/document/_form.blade.php new file mode 100644 index 0000000..4c1020e --- /dev/null +++ b/resources/views/settings/document/_form.blade.php @@ -0,0 +1,123 @@ +
        + General +
        + +
        + {!! Form::label('type', 'Type..') !!} +
        + {!! Form::select('type', Lang::get('doctypes'), null, ['id' => 'type', 'placeholder' => '-- select type --']) !!} +
        + +
        + +
        + {!! Form::label('server_state', 'Status..') !!} +
        + {!! Form::select('server_state', Config::get('enums.server_states'), null, ['id' => 'server_state']) !!} +
        +
        + +
        + {!! Form::label('thesis_year_accepted', 'Jahr der Erstveröffentlichung') !!} +
        + {!! Form::select('thesis_year_accepted', $years, null, ['id' => 'thesis_year_accepted', 'placeholder' => '-- None --']) !!} +
        + thesis_year_accepted is optional +
        + +
        + {!! Form::label('project_id', 'Project..') !!} +
        + {!! Form::select('project_id', $projects, null, ['id' => 'project_id', 'placeholder' => '--no project--']) !!} +
        + project is optional +
        + + {{--
        + {!! Form::label('shelf_id', 'Shelf..') !!} + {!! Form::select('shelf_id', $shelves, null, ['id' => 'shelf_id']) !!} +
        --}} + +
        + {!! Form::label('embargo_date', 'Embargo Date') !!} + {!! Form::date('embargo_date', null, ['placeholder' => date('y-m-d'), 'class' => 'pure-u-23-24']) !!} + embargo_date is optional +
        +
        +
        + +
        + Title +
        + + @foreach($document->titles as $key => $title) +
        + {{ Form::label('title', 'Title ' .($key+1).':') }} + + {{ Form::text('titles['.$title->id.'][value]', $title->value, ['class' => 'pure-u-23-24']) }} +
        +
        + {{ Form::label('language', 'Language..') }} +
        + {{ Form::select('titles['.$title->id.'][language]', $languages, $title->language, ['placeholder' => '--no language--']) }} +
        +
        + @endforeach + +
        +
        + +
        + Abstract +
        + + @foreach($document->abstracts as $key => $abstract) +
        + {{ Form::label('abstract', 'Abstract ' .($key+1).':') }} + + {{ Form::textarea('abstracts['.$abstract->id.'][value]', $abstract->value, ['class' => 'pure-u-23-24', 'size' => '70x6']) }} +
        +
        + {{ Form::label('language', 'Language..') }} +
        + {{ Form::select('abstracts['.$abstract->id.'][language]', $languages, $abstract->language, ['placeholder' => '--no language--']) }} +
        +
        + @endforeach + +
        +
        + +
        + Licenses + + {{--
        + {!! Form::label('licenses[]', 'Licenses..') !!} + {!! Form::select('licenses[]', $options, array_pluck($document->licenses, 'id'), ['multiple' ]) !!} +
        --}} + +
        + @foreach ($options as $license) + + + + + @endforeach +
        +
        + + +
        +
        + +
        + + +@include('errors._errors') diff --git a/resources/views/settings/document/document.blade.php b/resources/views/settings/document/document.blade.php new file mode 100644 index 0000000..10edfe6 --- /dev/null +++ b/resources/views/settings/document/document.blade.php @@ -0,0 +1,96 @@ +@extends('layouts.app') + +@section('content') + + +
        +

        Datasets

        +
        + + + +
        + + + +
        +
        Page {{ $documents->currentPage() }} of {{ $documents->lastPage() }}
        +
        Shelf Options
        {{ $shelf->shelf }}   - +   + +
        + + + + + + + + + + + @foreach($documents as $document) + + + + + + @if($document->hasProject()) + + @else + + @endif + + + + {{-- + + + + + @endforeach + + +
        idDocument TypeProjectTitlesOptions
        {{ $document->id }}{{ $document->type }}{{ $document->project->name }}-- + @foreach ($document->titles as $title) +

        title: {{ $title->value }}

        + @endforeach + +
        + @foreach ($document->collections as $collection) +

        in collection: {{ $collection->name }}

        + @endforeach --}} + +
        +   +   + +
        +
        + + +
        + {{ $documents + ->appends(Input::except('page')) + ->links('vendor.pagination.default') }} +
        + + {!! Form::close() !!} + +
        + +@stop \ No newline at end of file diff --git a/resources/views/settings/document/edit.blade.php b/resources/views/settings/document/edit.blade.php new file mode 100644 index 0000000..00e0950 --- /dev/null +++ b/resources/views/settings/document/edit.blade.php @@ -0,0 +1,31 @@ +@extends('layouts.app') + + +@section('content') +
        + +
        +
        +

        Edit Your Dataset

        + + + +
        + + {!! Form::model($document, ['method' => 'PATCH', 'route' => ['settings.document.update', $document->id], 'class' => 'pure-form', 'enctype' => 'multipart/form-data' ]) !!} + + @include('settings/document/_form', ['submitButtonText' => 'Edit Dataset', 'bookLabel' => 'Edit Dataset.']) + + {!! Form::close() !!} + +
        +
        +
        + +
        +@stop \ No newline at end of file diff --git a/resources/views/settings/document/show.blade.php b/resources/views/settings/document/show.blade.php new file mode 100644 index 0000000..bb5465c --- /dev/null +++ b/resources/views/settings/document/show.blade.php @@ -0,0 +1,31 @@ +@extends('layouts.app') + +@section('content') + +
        +
        + + @foreach ($document->titles as $title) +

        {{ $title->value }}

        + @endforeach +
        + +
        +
        +
          + @foreach ($document->abstracts as $abstract) +
        • {{ $abstract->value }}
        • + @endforeach +
        +
        + +
        + + +
        + +@stop \ No newline at end of file diff --git a/resources/views/settings/license/_form.blade.php b/resources/views/settings/license/_form.blade.php new file mode 100644 index 0000000..263957c --- /dev/null +++ b/resources/views/settings/license/_form.blade.php @@ -0,0 +1,77 @@ +
        + +
        + +
        + {!! Form::label('name', 'Lizenzname') !!} + {!! Form::text('name_long', null, ['class' => 'pure-u-23-24']) !!} +
        + +
        + {!! Form::label('language', 'Sprache') !!} +
        + {!! Form::select('language', $languages, null, ['id' => 'language', 'placeholder' => '--no language--']) !!} +
        + language is optional +
        + +
        + {!! Form::label('link_licence', 'URI zur Lizenz') !!} + {!! Form::text('link_licence', null, ['class' => 'pure-u-23-24']) !!} +
        + +
        + {!! Form::label('link_logo', 'URI zum Logo') !!} + {!! Form::text('link_logo', null, ['class' => 'pure-u-23-24']) !!} +
        + +
        + {!! Form::label('desc_text', 'Beschreibungstext') !!} + {!! Form::textarea('desc_text', null, ['class' => 'pure-u-23-24', 'size' => '70x6']) !!} +
        + +
        + {!! Form::label('desc_markup', 'Beschreibung als Markup') !!} + {!! Form::textarea('desc_markup', null, ['class' => 'pure-u-23-24', 'size' => '70x6']) !!} +
        + +
        + {!! Form::label('comment_internal', 'Interne Bermerkung') !!} + {!! Form::textarea('comment_internal', null, ['class' => 'pure-u-23-24', 'size' => '70x6']) !!} +
        + +
        + {!! Form::label('mime_type', 'Internet Media Typ') !!} + {!! Form::text('mime_type', null, ['class' => 'pure-u-23-24']) !!} +
        + +
        + {!! Form::label('sort_order', 'Sortierreihenfolge') !!} + {!! Form::text('sort_order', null, ['class' => 'pure-u-23-24']) !!} +
        + +
        + + + + + + + +
        +
        + {!! Form::submit($submitButtonText, ['class' => 'pure-button button-small']) !!} +
        + + +
        + +@include('errors._errors') \ No newline at end of file diff --git a/resources/views/settings/license/edit.blade.php b/resources/views/settings/license/edit.blade.php new file mode 100644 index 0000000..77b6e1b --- /dev/null +++ b/resources/views/settings/license/edit.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
        + +
        +
        +

        Edit Your License

        + + + +
        + {!! Form::model($license, ['method' => 'PATCH', 'route' => ['settings.license.update', $license->id], 'class' => 'pure-form']) !!} + + @include('settings/license/_form', ['submitButtonText' => 'Edit License', 'daysLabel' => 'Days..', 'finesLabel' => 'Licenses..']) + + {!! Form::close() !!} +
        + +
        +
        +
        +@stop \ No newline at end of file diff --git a/resources/views/settings/license/license.blade.php b/resources/views/settings/license/license.blade.php new file mode 100644 index 0000000..037f0ba --- /dev/null +++ b/resources/views/settings/license/license.blade.php @@ -0,0 +1,43 @@ +@extends('layouts.app') + +@section('content') + +
        +

        LICENSES

        +
        + +
        + + + + + + + + + + + + @foreach($licenses as $license) + + + + + + + + @endforeach + + + +
        Licence
        {{ $license->name_long }} + + edit + +
        + + + +
        + +@stop \ No newline at end of file diff --git a/resources/views/settings/person/_form.blade.php b/resources/views/settings/person/_form.blade.php new file mode 100644 index 0000000..dbed6fb --- /dev/null +++ b/resources/views/settings/person/_form.blade.php @@ -0,0 +1,47 @@ +
        +
        + {!! Form::label('academic_title', 'Title..') !!} + {!! Form::text('academic_title', null, ['class' => 'form-control']) !!} + +
        + +
        + {!! Form::label('last_name', 'Name..') !!} + {!! Form::text('last_name', null, ['class' => 'form-control']) !!} + * +
        + +
        + {!! Form::label('first_name', 'First Name..') !!} + {!! Form::text('first_name', null, ['class' => 'form-control']) !!} + +
        + + +
        + {!! Form::label('email', 'Email..') !!} + {!! Form::text('email', null, ['class' => 'form-control']) !!} + email is optional. +
        + +
        + {!! Form::label('identifier_orcid', 'ORCID..') !!} + {!! Form::text('identifier_orcid', null, ['class' => 'form-control']) !!} + orcid is optional. +
        + +
        Status of person
        +
        + +
        + + + {!! Form::submit($submitButtonText, ['class' => 'pure-button button-small']) !!} + +
        + +@include('errors._errors') \ No newline at end of file diff --git a/resources/views/settings/person/add.blade.php b/resources/views/settings/person/add.blade.php new file mode 100644 index 0000000..03679cd --- /dev/null +++ b/resources/views/settings/person/add.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.app') + + +@section('content') + +

        Add Your Person

        + + +
        + + {!! Form::open(['route' => 'settings.person.post', 'class' => 'pure-form pure-form-stacked']) !!} + + @include('settings/person/_form', ['submitButtonText' => 'Add Person', 'projectLabel' => 'Save Person.']) + + {!! Form::close() !!} + +
        + + + + +@stop \ No newline at end of file diff --git a/resources/views/settings/person/edit.blade.php b/resources/views/settings/person/edit.blade.php new file mode 100644 index 0000000..8280b56 --- /dev/null +++ b/resources/views/settings/person/edit.blade.php @@ -0,0 +1,38 @@ +@extends('layouts.app') + +@section('content') +
        + +
        +
        +

        Edit {{ $person->getFullName() }}

        + + +
        + + {!! Form::model($person, ['method' => 'PATCH', 'route' => ['settings.person.update', $person->id],'class' => 'pure-form pure-form-aligned']) !!} + + @include('settings/person/_form', ['submitButtonText' => 'Save Person']) + + {!! Form::close() !!} + +
        +
        +
        + +
        + +
        + +
        + +@stop \ No newline at end of file diff --git a/resources/views/settings/person/person.blade.php b/resources/views/settings/person/person.blade.php new file mode 100644 index 0000000..89b9d6d --- /dev/null +++ b/resources/views/settings/person/person.blade.php @@ -0,0 +1,75 @@ +@extends('layouts.app') + +@section('content') +
        + +
        +
        + +
        +

        Persons Management

        +
        + + + + ADD NEW Person + +

        + + + + + + + + + + + + + + + + + + @foreach($persons as $person) + + + + + + + + + + + + + + @endforeach + + + +
        NameORCIDStatusDocument Count
        Options
        {{ $person->last_name }}{{ $person->identifier_orcid }} + @if($person->status == 1) + Active + @else + Inactive + @endif + + @if($person->status == 1) + Deactivate + @else + Activate + @endif + {{ $person->documents->count() }} +   +   +
        + + +
        +
        +
        + +@stop \ No newline at end of file diff --git a/resources/views/settings/project/_form.blade.php b/resources/views/settings/project/_form.blade.php new file mode 100644 index 0000000..d4f6c60 --- /dev/null +++ b/resources/views/settings/project/_form.blade.php @@ -0,0 +1,18 @@ +
        +
        + {{ Form::label('name', 'project name') }} + {{ Form::text('name', null, ['class' => 'form-control']) }} + * +
        +
        + {{ Form::label('label', 'project label') }} + {{ Form::text('label', null, ['class' => 'form-control']) }} + * +
        + + + {{ Form::submit($submitButtonText, ['class' => 'pure-button button-small']) }} + +
        + +@include('errors._errors') \ No newline at end of file diff --git a/resources/views/settings/project/add.blade.php b/resources/views/settings/project/add.blade.php new file mode 100644 index 0000000..b55a2c2 --- /dev/null +++ b/resources/views/settings/project/add.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.app') + +@section('content') + + +

        Add Your Project

        + + +
        + + {!! Form::open(['route' => 'settings.project.post', 'class' => 'pure-form pure-form-stacked']) !!} + + @include('settings/project/_form', ['submitButtonText' => 'Save Project', 'projectLabel' => 'Save Project.']) + + {!! Form::close() !!} + +
        + + + + +@stop \ No newline at end of file diff --git a/resources/views/settings/project/category.blade.php b/resources/views/settings/project/category.blade.php new file mode 100644 index 0000000..2c235e2 --- /dev/null +++ b/resources/views/settings/project/category.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.app') + +@section('content') +
        + +
        +
        +
        +

        Project

        +
        + + + ADD NEW Project + + +

        + + + + + + + + + + + + @foreach($projects as $project) + + + + + @endforeach + + +
        ProjectOptions
        {{ $project->name }} +   + +
        +
        +
        +
        + +@stop \ No newline at end of file diff --git a/resources/views/settings/project/edit.blade.php b/resources/views/settings/project/edit.blade.php new file mode 100644 index 0000000..56021c7 --- /dev/null +++ b/resources/views/settings/project/edit.blade.php @@ -0,0 +1,31 @@ +@extends('layouts.app') + +@section('content') + +
        + +
        +
        + +

        Edit Your Project

        + +
        + + {!! Form::model($project, ['method' => 'PATCH', 'route' => ['settings.project.update', $project->id], 'class' => 'pure-form pure-form-aligned']) !!} + + @include('settings/project/_form', ['submitButtonText' => 'Save Project', 'projectLabel' => 'Edit Project.']) + + {!! Form::close() !!} + +
        + +
        +
        +
        + +@stop diff --git a/resources/views/settings/role/create.blade.php b/resources/views/settings/role/create.blade.php new file mode 100644 index 0000000..d838cf3 --- /dev/null +++ b/resources/views/settings/role/create.blade.php @@ -0,0 +1,57 @@ +@extends('layouts.app') + + +@section('content') + + +

        Create New Role

        + + +{!! Form::open(['route' => 'user.store', 'method'=>'POST', 'class' => 'pure-form pure-form-aligned']) !!} + +
        + + +
        + {!! Form::label('name', 'Name:', ['class' => 'control-label']) !!} + {!! Form::text('name', null, array('placeholder' => 'Name','class' => 'form-control')) !!} + * + @if($errors->has('name')) +

        + {{ $errors->first('name') }} +

        + @endif +
        + + +
        Assign Permissions
        +
        + + + + @foreach ($permissions as $permission) + + + + @endforeach +
        + + +
        + +
        + +
        + +{!! Form::close() !!} + + +@endsection \ No newline at end of file diff --git a/resources/views/settings/role/edit.blade.php b/resources/views/settings/role/edit.blade.php new file mode 100644 index 0000000..bd82c3c --- /dev/null +++ b/resources/views/settings/role/edit.blade.php @@ -0,0 +1,76 @@ +@extends('layouts.app') + +@section('content') + +
        +
        +
        +

        Edit {{ $role->login }}

        + + + + @if (count($errors) > 0) +
        + Whoops! There were some problems with your input.

        +
          + @foreach ($errors->all() as $error) +
        • {{ $error }}
        • + @endforeach +
        +
        + @endif + +
        + + {!! Form::model($role, ['method' => 'PATCH','route' => ['role.update', $role->id], 'class' => 'pure-form pure-form-aligned']) !!} + +
        +
        + {!! Form::label('name', 'Name:', ['class' => 'control-label']) !!} + {!! Form::text('name', null, array('placeholder' => 'Name','class' => 'form-control')) !!} + * +
        + + +
        Assign Permissions
        +
        + + + + @foreach ($permissions as $permission) + + + @endforeach + +
        + + + +
        + + + {!! Form::close() !!} + +
        +
        +
        + +
        + +
        + +
        + +@endsection \ No newline at end of file diff --git a/resources/views/settings/role/role.blade.php b/resources/views/settings/role/role.blade.php new file mode 100644 index 0000000..74652df --- /dev/null +++ b/resources/views/settings/role/role.blade.php @@ -0,0 +1,51 @@ +@extends('layouts.app') + +@section('content') +
        +
        + +
        +
        +

        Roles Management +

        +
        + + + + Create New Role + + + +
        + + + + + + + + + + + @foreach ($roles as $role) + + + + + + + @endforeach + +
        RolePermissionsAction
        {{ $role->name }} + @foreach ($role->permissions()->pluck('name') as $permission) + + @endforeach + +  Edit Role +
        +
        +
        + +
        +
        +@stop \ No newline at end of file diff --git a/resources/views/settings/user/create.blade.php b/resources/views/settings/user/create.blade.php new file mode 100644 index 0000000..dcec501 --- /dev/null +++ b/resources/views/settings/user/create.blade.php @@ -0,0 +1,93 @@ +@extends('layouts.app') + + +@section('content') + + +

        Create New User

        + + + +@if (count($errors) > 0) + +
        + Whoops! There were some problems with your input.

        +
          + @foreach ($errors->all() as $error) +
        • {{ $error }}
        • + @endforeach +
        +
        +@endif + + +{!! Form::open(['route' => 'user.store', 'method'=>'POST', 'class' => 'pure-form pure-form-aligned']) !!} + +
        + + + +
        + + {!! Form::text('login', null, array('placeholder' => 'Name','class' => 'form-control')) !!} + * +
        + +
        + + {!! Form::text('email', null, array('placeholder' => 'Email','class' => 'form-control')) !!} + * +
        + +
        + + {!! Form::password('password', array('placeholder' => 'Password','class' => 'form-control')) !!} + * +
        + +
        + + {!! Form::password('password_confirmation', array('placeholder' => 'Confirm Password','class' => 'form-control')) !!} + * +
        + +
        Assign Roles
        +
        + + + + @foreach ($roles as $role) + + + + @endforeach +
        + + + +
        + + + +
        + +
        + +{!! Form::close() !!} + + +@endsection \ No newline at end of file diff --git a/resources/views/settings/user/edit.blade.php b/resources/views/settings/user/edit.blade.php new file mode 100644 index 0000000..506177a --- /dev/null +++ b/resources/views/settings/user/edit.blade.php @@ -0,0 +1,93 @@ +@extends('layouts.app') + +@section('content') + +
        +
        +
        +

        Edit {{ $user->login }}

        + + + + @if (count($errors) > 0) +
        + Whoops! There were some problems with your input.

        +
          + @foreach ($errors->all() as $error) +
        • {{ $error }}
        • + @endforeach +
        +
        + @endif + +
        + + {!! Form::model($user, ['method' => 'PATCH','route' => ['user.update', $user->id], 'class' => 'pure-form pure-form-aligned']) !!} + +
        +
        + + {!! Form::text('login', null, array('placeholder' => 'Name','class' => 'form-control')) !!} + * +
        + +
        + + {!! Form::text('email', null, array('placeholder' => 'Email','class' => 'form-control')) !!} + * +
        + +
        + + {!! Form::password('password', array('placeholder' => 'Password','class' => 'form-control')) !!} + * +
        + +
        + + {!! Form::password('password_confirmation', array('placeholder' => 'Confirm Password','class' => 'form-control')) !!} + * +
        + +
        Assign Roles
        +
        + + + + @foreach ($roles as $role) + + + + @endforeach +
        + + + +
        + + + {!! Form::close() !!} + +
        +
        +
        + +
        + +
        + +
        + +@endsection \ No newline at end of file diff --git a/resources/views/settings/user/user.blade.php b/resources/views/settings/user/user.blade.php new file mode 100644 index 0000000..36b4d5e --- /dev/null +++ b/resources/views/settings/user/user.blade.php @@ -0,0 +1,67 @@ +@extends('layouts.app') + +@section('content') +
        + +
        +
        + +
        +

        Users Management

        +
        + + + + Create New User + +

        + + @if ($message = Session::get('success')) +
        +

        {{ $message }}

        +
        + @endif + + + + + + + + + + + + + + + @foreach ($users as $key => $user) + + + + + + + + @endforeach + + +
        NoNameEmailRolesAction
        {{ ++$i }}{{ $user->login }}{{ $user->email }} + + @if(!empty($user->getRoleNames())) + @foreach($user->getRoleNames() as $roleName) + + @endforeach + @endif + +  Edit +   +  Delete +
        + {!! $users->render() !!} + +
        +
        +
        + +@stop \ No newline at end of file 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()) +
          + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
        • «
        • + @else +
        • + @endif + + {{-- Pagination Elements --}} + @foreach ($elements as $element) + {{-- "Three Dots" Separator --}} + @if (is_string($element)) +
        • {{ $element }}
        • + @endif + + {{-- Array Of Links --}} + @if (is_array($element)) + @foreach ($element as $page => $url) + @if ($page == $paginator->currentPage()) +
        • {{ $page }}
        • + @else +
        • {{ $page }}
        • + @endif + @endforeach + @endif + @endforeach + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
        • + @else +
        • »
        • + @endif +
        +@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..ede6f88 --- /dev/null +++ b/resources/views/vendor/pagination/default.blade.php @@ -0,0 +1,34 @@ +@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()) +
          + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
        • @lang('pagination.previous')
        • + @else +
        • + @endif + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
        • + @else +
        • @lang('pagination.next')
        • + @endif +
        +@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()) +
          + {{-- Previous Page Link --}} + @if ($paginator->onFirstPage()) +
        • @lang('pagination.previous')
        • + @else +
        • + @endif + + {{-- Next Page Link --}} + @if ($paginator->hasMorePages()) +
        • + @else +
        • @lang('pagination.next')
        • + @endif +
        +@endif diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..55f7341 --- /dev/null +++ b/routes/api.php @@ -0,0 +1,21 @@ +get('/user', function (Request $request) { + return $request->user(); +}); + +Route::get('/oai', 'Oai\RequestController@identify'); \ No newline at end of file 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..f6d03f1 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,277 @@ +name('home'); + + +Route::get('/oai', ['as' => 'oai', 'uses' => 'Oai\RequestController@index']); + +Route::get('/dataset/create-step1', ['as' => 'dataset.create1', 'uses' => 'Publish\IndexController@createStep1']); +Route::post('/dataset/store-step1', ['as' => 'dataset.store1', 'uses' => 'Publish\IndexController@storeStep1']); + +Route::get('/dataset/create-step2', ['as' => 'dataset.create2', 'uses' => 'Publish\IndexController@createStep2']); +Route::post('/dataset/store-step2', ['as' => 'dataset.store2', 'uses' => 'Publish\IndexController@storeStep2']); + +Route::get('/dataset/create-step3', ['as' => 'dataset.create3', 'uses' => 'Publish\IndexController@createStep3']); +Route::post('/dataset/store', ['as' => 'dataset.store', 'uses' => 'Publish\IndexController@store']); + +//=================================================setting users==================================================== +Route::group(['middleware' => ['perm:settings']], function () { + + //Route::resource('users','UserController'); + Route::get('settings/user', [ + 'as' => 'user.index', 'uses' => 'Settings\UserController@index' + ]); + Route::get('settings/user/create', [ + 'as' => 'user.create', 'uses' => 'Settings\UserController@create' + ]); + Route::post('settings/user/store', [ + 'as' => 'user.store', 'uses' => 'Settings\UserController@store' + ]); + Route::get('settings/user/edit/{id}', [ + 'as' => 'user.edit', 'uses' => 'Settings\UserController@edit' + ]); + Route::patch('settings/user/update/{id}', [ + 'as' => 'user.update', 'uses' => 'Settings\UserController@update' + ]); + Route::get('settings/user/destroy/{id}', [ + 'as' => 'user.destroy', 'uses' => 'Settings\UserController@destroy' + ]); + + //Route::resource('users','RoleController'); + Route::get('settings/role', [ + 'as' => 'role.index', 'uses' => 'Settings\RoleController@index' + ]); + Route::get('settings/role/create', [ + 'as' => 'role.create', 'uses' => 'Settings\RoleController@create' + ]); + + Route::get('settings/role/edit/{id}', [ + 'as' => 'role.edit', 'uses' => 'Settings\RoleController@edit' + ]); + Route::patch('settings/role/update/{id}', [ + 'as' => 'role.update', 'uses' => 'Settings\RoleController@update' + ]); +}); + +//=================================================home==================================================== +Route::get('/', [ +'as' => 'home.index', 'uses' => 'HomeController@index' +]); +Route::get('/contact', [ +'as' => 'home.contact', 'uses' => 'HomeController@contact' +]); +Route::get('/imprint', [ +'as' => 'home.imprint', 'uses' => 'HomeController@imprint' +]); +Route::get('/about', [ +'as' => 'home.about', 'uses' => 'HomeController@about' +]); +Route::get('/news', [ +'as' => 'home.news', 'uses' => 'HomeController@news' +]); +Route::get('/dataset', [ +'as' => 'documents', 'uses' => 'PagesController@documents' +]); +Route::get('/dataset/{id}', [ +'as' => 'document.show', 'uses' => 'PagesController@show' +]); +//=================================================Crawlers==================================================== +Route::get('sitelinks', [ +'as' => 'sitelinks.index', 'uses' => 'SitelinkController@index' +]); +Route::get('sitelinks/list/{year}', 'SitelinkController@list')->name('sitelinks.list'); +//=================================================solr search==================================================== +Route::get('/index', [ +'as' => 'search.index', 'uses' => 'SearchController@index' +]); +Route::post('/queries', [ +'as' => 'queries', 'uses' => 'SearchController@search' +]); +Route::get('/queries/', [ +'as' => 'queries1', 'uses' => 'SearchController@search' +]); +Route::get('/ping', 'SearchController@ping'); +//=================================================borrow==================================================== +Route::get('borrow', [ +'as' => 'borrow.borrow', 'uses' => 'BorrowController@index' +]); +Route::post('borrow.post', [ +'as' => 'borrow.post', 'uses' => 'BorrowController@store' +]); +Route::get('laporan', [ +'as' => 'borrow.report', 'uses' => 'BorrowController@report' +]); +Route::get('pengembalian/{id}', [ +'as' => 'borrow.pengembalian', 'uses' => 'BorrowController@pengembalian' +]); +Route::get('perpanjang/{id}', [ +'as' => 'borrow.perpanjang', 'uses' => 'BorrowController@perpanjang' +]); +Route::get('history', [ +'as' => 'borrow.history', 'uses' => 'BorrowController@histori' +]); +//=================================================setting collection============================================= +Route::get('/settings/collection', [ +'as' => 'settings.collection', 'uses' => 'CollectionController@index' +]); +Route::get('settings/collection/edit/{id}', [ +'as' => 'settings.collection.edit', 'uses' => 'CollectionController@edit' +]); +Route::patch('settings/collection/edit/{id}', [ +'as' => 'settings.collection.update', 'uses' => 'CollectionController@update' +]); +Route::get('settings/collection/delete/{id}', [ +'as' => 'settings.collection.delete', 'uses' => 'CollectionController@delete' +]); +//========================================================================================================================== +//=================================================setting project==================================================== +Route::get('/settings/project', [ +'as' => 'settings.project', 'uses' => 'Settings\CategoryController@index' +]); +Route::get('/settings/project/add', [ +'as' => 'settings.project.add', 'uses' => 'Settings\CategoryController@add' +]); +Route::post('settings/project/add', [ +'as' => 'settings.project.post', 'uses' => 'Settings\CategoryController@store' +]); +Route::get('settings/project/edit/{id}', [ +'as' => 'settings.project.edit', 'uses' => 'Settings\CategoryController@edit' +]); +Route::patch('settings/project/edit/{id}', [ +'as' => 'settings.project.update', 'uses' => 'Settings\CategoryController@update' +]); +Route::get('settings/project/delete/{id}', [ +'as' => 'settings.project.delete', 'uses' => 'Settings\CategoryController@delete' +]); +//================================================================================================================== +//=================================================setting shelf==================================================== +Route::get('/settings/shelf', [ +'as' => 'settings.shelf', 'uses' => 'ShelfController@index' +]); +Route::get('/settings/shelf/add', [ +'as' => 'settings.shelf.add', 'uses' => 'ShelfController@add' +]); +Route::post('settings/shelf/add', [ +'as' => 'settings.shelf.post', 'uses' => 'ShelfController@store' +]); +Route::get('settings/shelf/edit/{id}', [ +'as' => 'settings.shelf.edit', 'uses' => 'ShelfController@edit' +]); +Route::patch('settings/shelf/edit/{id}', [ +'as' => 'settings.shelf.update', 'uses' => 'ShelfController@update' +]); +Route::get('settings/shelf/delete/{id}', [ +'as' => 'settings.shelf.delete', 'uses' => 'ShelfController@delete' +]); +//======================================================================================================= +//=================================================setting license======================================= +Route::get('/settings/license', [ +'as' => 'settings.license', 'uses' => 'Settings\LicenseController@index' +]); +Route::get('settings/license/edit/{id}', [ +'as' => 'settings.license.edit', 'uses' => 'Settings\LicenseController@edit' +]); +Route::patch('settings/license/edit/{id}', [ +'as' => 'settings.license.update', 'uses' => 'Settings\LicenseController@update' +]); +//========================================================================================================= +//=================================================setting periode========================================= +Route::get('/settings/periode', [ +'as' => 'settings.periode', 'uses' => 'PeriodeController@index' +]); +Route::get('settings/periode/edit/{id}', [ +'as' => 'settings.periode.edit', 'uses' => 'PeriodeController@edit' +]); +Route::patch('settings/periode/edit/{id}', [ +'as' => 'settings.periode.update', 'uses' => 'PeriodeController@update' +]); +//=================================================================================================== +//=================================================setting person==================================== +Route::get('/settings/person', [ +'as' => 'settings.person', 'uses' => 'Settings\PersonController@index' +]); +Route::get('/settings/person/add', [ +'as' => 'settings.person.add', 'uses' => 'Settings\PersonController@add' +]); +Route::post('settings/person/add', [ +'as' => 'settings.person.post', 'uses' => 'Settings\PersonController@store' +]); +Route::get('settings/person/edit/{id}', [ +'as' => 'settings.person.edit', 'uses' => 'Settings\PersonController@edit' +]); +Route::patch('settings/person/edit/{id}', [ +'as' => 'settings.person.update', 'uses' => 'Settings\PersonController@update' +]); +Route::get('settings/person/delete/{id}', [ +'as' => 'settings.person.delete', 'uses' => 'Settings\PersonController@delete' +]); +Route::get('settings/person/down/{id}', [ +'as' => 'settings.person.down', 'uses' => 'Settings\PersonController@down' +]); +Route::get('settings/person/up/{id}', [ +'as' => 'settings.person.up', 'uses' => 'Settings\PersonController@up' +]); +//============================================================================================================= +//=================================================setting book================================================ +Route::get('/settings/book', [ +'as' => 'settings.book', 'uses' => 'BookController@index' +]); +Route::get('/settings/book/add', [ +'as' => 'settings.book.add', 'uses' => 'BookController@add' +]); +Route::post('settings/book/add', [ +'as' => 'settings.book.post', 'uses' => 'BookController@store' +]); +Route::get('settings/book/edit/{id}', [ +'as' => 'settings.book.edit', 'uses' => 'BookController@edit' +]); +Route::patch('settings/book/edit/{id}', [ +'as' => 'settings.book.update', 'uses' => 'BookController@update' +]); +Route::get('settings/book/delete/{id}', [ +'as' => 'settings.book.delete', 'uses' => 'BookController@delete' +]); +//============================================================================================================= +//=================================================setting dataset============================================= +Route::get('settings/document', [ +'as' => 'settings.document', 'uses' => 'Settings\DatasetController@index' +]); +Route::get('settings/document/{id}', [ +'as' => 'settings.document.show', 'uses' => 'Settings\DatasetController@show' +]); +Route::get('settings/document/edit/{id}', [ +'as' => 'settings.document.edit', 'uses' => 'Settings\DatasetController@edit' +]); +Route::patch('settings/document/update/{id}', [ +'as' => 'settings.document.update', 'uses' => 'Settings\DatasetController@update' +]); +//=============================================================================================================== +// Route::controllers([ +// 'auth' => 'Auth\AuthController', +// 'password' => 'Auth\PasswordController', +// ]); +//Auth::routes(); +$this->get('login', 'Auth\LoginController@showLoginForm')->name('login'); +$this->post('login', 'Auth\LoginController@login'); +$this->get('logout', 'Auth\LoginController@logout')->name('logout'); +// Registration Routes... +$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); +$this->post('register', 'Auth\RegisterController@register'); +// Password Reset Routes... +$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request'); +$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); +$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset'); +$this->post('password/reset', 'Auth\ResetPasswordController@reset'); diff --git a/server.php b/server.php index c7e378d..25b2aca 100755 --- a/server.php +++ b/server.php @@ -7,15 +7,14 @@ */ $uri = urldecode( - parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) + 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; +if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { + return false; } require_once __DIR__.'/public/index.php'; diff --git a/storage/.gitignore b/storage/.gitignore index 78eac7b..e1ba67a 100755 --- a/storage/.gitignore +++ b/storage/.gitignore @@ -1 +1,3 @@ +*.sqlite +*.db laravel.log \ No newline at end of file diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php index 1ea4acd..3dc3061 100755 --- a/tests/ExampleTest.php +++ b/tests/ExampleTest.php @@ -1,17 +1,17 @@ call('GET', '/'); - - $this->assertEquals(200, $response->getStatusCode()); - } + /** + * A basic functional test example. + * + * @return void + */ + public function testBasicExample() + { + $response = $this->call('GET', '/'); + $this->assertEquals(200, $response->getStatusCode()); + } } diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 0000000..bed636e --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,21 @@ +let mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management siehe https://laravel.com/docs/5.5/mix + |-------------------------------------------------------------------------- + | + | 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.setPublicPath('../'); + +mix.js('resources/assets/js/lib.js', 'public/js') +.sass('resources/assets/sass/app1.scss', 'public/css') +.options({ + //publicPath: '../' + processCssUrls: false +}); +mix.copy('node_modules/bootstrap-sass/assets/fonts/bootstrap', 'public/fonts/bootstrap');